Показать сообщение отдельно
  #7 (permalink)  
Старый 09.04.2012, 20:52
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Товарищи масоны, мы тут похихикали... а сегодня я столкнулся с задачкой на эту тему и уже не очень смешно. Не буду открывать новую тему, продолжу в этой.
Задачка такая: имеется число x, которое в процессе работы может принять какое угодно значение. Это может быть число (в идеале), это может быть строка, это может быть undefined, null, false, NaN, ...
Необходимо проверить переменную x и, если в ней целое число, то всё хорошо, а если не число, то обнулить, т.е. присвоить самый настоящий ноль.То есть некоторый аналог PHP-шного
settype($x,"integer");
Далее нужно эту переменную преобразовать в строку.
Вот что у меня получилось:
x = +x; if (isNaN(x)) x = 0;
Может вы придумаете изящнее? Проверил на разных значениях x и всё было хорошо, пока не произошло вот такое:
x=999999999999999999999999;

Если смотреть глазами человека, то это число? -Да! Но если смотреть глазами javascript_а, то это как бы не число, потому что не integer.
Поэтому на выходе (после преобразования х в строку) получаем не '999999999999999999999999', а '1e+24'!
Как быть? Прошу помощь из зала
Ответить с цитированием