Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2012, 16:17
Интересующийся
Отправить личное сообщение для nemo4430 Посмотреть профиль Найти все сообщения от nemo4430
 
Регистрация: 07.04.2012
Сообщений: 13

Проблема с прибавлением
Я захотел сделать калькулятор на javascript. Отнимание, умножение, деление у меня нормально получилось, а прибавление - не хочет. Когда я хочу прибавить 2 числа, например 6 и 7, то оно пишет не 13, а 67. В чем моя ошибка? Вот код:
<script type="text/javascript"> 
var x = window.prompt("Введите число", "Число");
var y = window.prompt("Введите число 2", "Число 2");
var z = x + y;
document.write(z);
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2012, 16:33
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

z = parseInt(x)+parseInt(y)
__________________
С моих слов записано верно.
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2012, 17:50
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Лучше вместо parseInt() использовать Number(), т.к. число не обязательно может быть целое.
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2012, 18:12
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Нет, лучше сразу к типу приводить:
<script type="text/javascript"> 
var x = +prompt("Введите число", "Число");
var y = +prompt("Введите число 2", "Число 2");
var z = x + y;
document.write(z);
</script>
__________________
оляля, ололо
Ответить с цитированием
  #5 (permalink)  
Старый 07.04.2012, 19:38
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Maxmaxmахimus, масон web-программер! Афигеть =)
Ответить с цитированием
  #6 (permalink)  
Старый 07.04.2012, 21:04
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Maxmaxmахimus,
Ты написал тоже, что и я =/
__________________
оляля, ололо
Ответить с цитированием
  #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'!
Как быть? Прошу помощь из зала
Ответить с цитированием
  #8 (permalink)  
Старый 11.04.2012, 09:02
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Маэстро
Но если смотреть глазами javascript_а, то это как бы не число, потому что не integer.
В JS нет integer, есть Number на все числа.
Ответить с цитированием
  #9 (permalink)  
Старый 11.04.2012, 10:56
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Kolyaj Посмотреть сообщение
В JS нет integer, есть Number на все числа.
Сути проблемы это не меняет.
Ответить с цитированием
  #10 (permalink)  
Старый 11.04.2012, 11:06
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Maxmaxmахimus Посмотреть сообщение
function test(x){
   return (Math.round(x) === x && x !== Infinity && x !== -Infinity) ? ''+x : '0';
}
Сначала Вы здесь написали такую функцию:
function test(x){
   return (Math.round(x) === x) ? x : 0;
}
теперь вот такой звездолет:
function test(x){
   return (Math.round(x) === x && x !== Infinity && x !== -Infinity) ? ''+x : '0';
}
А тестировать пробовали? Вот результаты моего тестирования:
x=test(9999);
//результат: 9999

x=test(99999999);      
//результат: 99999999


x=test(999999999999);
//результат: 999999999999

x=test(9999999999999999);
//результат: 10000000000000000


x=test(99999999999999999999);
//результат: 100000000000000000000

x=test(999999999999999999999999);
//результат: 1e+24

document.write(x);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с Popup окном vovuslik jQuery 5 12.06.2010 16:12
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47