Сумма вещественных чисел
Всем, привет. Подскажите, пожалуйста, почему при сложении вещественных чисел получается такой результат:
i = 0; rezult = 0.01 i = 1; rezult = 0.02 i = 2; rezult = 0.03 i = 3; rezult = 0.04 i = 4; rezult = 0.05 i = 5; rezult = 0.060000000000000005 i = 6; rezult = 0.07 i = 7; rezult = 0.08 i = 8; rezult = 0.09 i = 9; rezult = 0.10 как исправить это? Скрипт следующий: <script> var rezult = 0; rezult = parseFloat(rezult); var num = 0.01; num = parseFloat(num); for (var i=0; i<10; i++){ rezult += num; document.write("i = " + i + "; rezult = " + rezult + "<br />"); } </script> |
vaskon,
это магия, и ее ни чем не исправить используй toFixed |
Спасибо
|
Потому что IEEE754.
А если кратко: нельзя в ограниченное место (у нас в лучшем случае 64 бита на число) впихнуть бесконечный набор чисел (а вещественных чисел, да что там вещественных, даже рациональных бесконечно много на любом отрезке). Приходится довольствоваться какими-то приближениями. |
alert(1+2==3) // true
alert(0.1+0.2==0.3) // false :) |
Часовой пояс GMT +3, время: 21:12. |