2013-07-16 5 views
1

Я написал быстрый JavaScript для простого расчета. Когда я запустил скрипт, был странный вывод, что я не могу объяснить ...Странный выход JavaScript при умножении

Сценарий был, в самом общем виде это:

for (var a=0;a<100;a++) { 
    var b= 3.6*a 
    document.write(b + "<br />"); 
} 

Вот демо: http://jsfiddle.net/uKa2G/

Ожидая, что я получаю прямые одиночные или никакие десятичные ответы, но каждая строка будет иметь огромное десятичное число.

Если кто-то может объяснить, почему это будет оценено.

+4

Это действительно 'i' или' a', или вы ленились? LOL – vee

+0

Не возражайте, чтобы я нажимал неправильный ключ при вводе текста в поле ввода вопроса ^^ '' i 'должно быть' a ', оно все еще запутывается. – Phinet

+0

Короткий ответ, заключающийся в том, что арифметика с плавающей запятой (то есть арифметика с нецелыми) имеет определенную степень неточности, поскольку компьютеры в целом только приближают значение числа с плавающей запятой в памяти (в отличие от целых чисел, которые могут быть смоделированы с точностью стоимость). –

ответ

0

Если вы не ожидали десятичного знака, то вы должны parseInt().

for (var a=0;a<100;a++) { 
    var b= 3.6*a; 
    console.log(parseInt(b)); 
} 
+0

@Paul пропустил это. Спасибо, что указали это. – Praveen

+1

Не проблема. Я не уменьшил это, но, возможно, OP интересуется ответами, такими как 320.40000000000003 и почему это не 320.4 – Paul

+0

Спасибо, что действительно сработало! – Phinet

Смежные вопросы