Вход

Просмотр полной версии : Глюки с умножением!


misteralexander
21.05.2013, 17:32
Буду очень признателен за совет.
Ситуация меня просто вводит в транс!
При умножении получаю какие то бредовые значений.

Умножаю
8.61 * 60.000

и неизменно получаю
516.5999999999999

var cena4= 8.61 * 60.000;
document.write(cena4);

Я просто в шоке. Специализируюсь на php. Решил немного использовать JavaScript. В чем проблема? Я так понимаю глюки из-за точки в цифрах. Как решить?

nerv_
21.05.2013, 17:37
Как решить?
http://javascript.ru/Number/toFixed

misteralexander
21.05.2013, 17:47
Спасибо, метод работает. Но есть информация - в чем причина глюка, ведь речь идет об элементарнейшей и базовой операции??

oneguy
21.05.2013, 17:54
Числа хранятся в памяти в формате с плавающей точкой в двоичной системе исчисления. Число 8.61 невозможно представить точно в виде двоичной дроби с конечным количеством знаков после запятой. Отсюда и погрешность в вычислениях.

nerv_
21.05.2013, 17:57
http://ru.wikipedia.org/wiki/IEEE_754-2008

рони
21.05.2013, 18:00
misteralexander,
ЧаВО - часто задаваемые вопросы (faq)
...
8. Почему 0.2+0.1 == 0.30000000000000004 (http://javascript.ru/forum/misc/9459-chavo-chasto-zadavaemye-voprosy-faq.html)

edison
21.05.2013, 21:46
Я просто в шоке. Специализируюсь на php.
В php тоже такие казусы, с плавающей точкой , есть , странно, что вы в шоке)))) Вот так вот, залезли в другой яп и узнали про тот в котором специализируетесь ))) А причины уже выше написали, они и для пхп такие же )