Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сумма вещественных чисел (https://javascript.ru/forum/misc/35537-summa-veshhestvennykh-chisel.html)

vaskon 13.02.2013 23:12

Сумма вещественных чисел
 
Всем, привет. Подскажите, пожалуйста, почему при сложении вещественных чисел получается такой результат:

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>

9xakep 13.02.2013 23:25

vaskon,
это магия, и ее ни чем не исправить

используй toFixed

vaskon 13.02.2013 23:47

Спасибо

B@rmaley.e><e 14.02.2013 00:00

Потому что IEEE754.

А если кратко: нельзя в ограниченное место (у нас в лучшем случае 64 бита на число) впихнуть бесконечный набор чисел (а вещественных чисел, да что там вещественных, даже рациональных бесконечно много на любом отрезке). Приходится довольствоваться какими-то приближениями.

rgl 14.02.2013 11:02

alert(1+2==3) // true
alert(0.1+0.2==0.3) // false
:)


Часовой пояс GMT +3, время: 21:12.