2015-04-24 4 views
3

Я изучаю Javascript и не получаю желаемого результата. Я буду полезен, если вы сможете исправить свое мышление.Получение различного вывода из цикла

Это мой простой код:

<script> 
window.onload = myFunction ; 
function myFunction(){ 
var i = 0 ; 
var counter = 1 ; 
while(i < counter){ 
    alert(counter); 
    counter = counter - 0.1 ; 
} 
} 
</script> 

Мой желаемый результат:

1 
0.9 
0.8 
0.7 
0.6 
0.5 
0.4 
0.3 
0.2 
0.1 

Но реальный выход:

1 
0.9 
0.8 
0.7000000000000001 
0.6000000000000001 
0.5000000000000001 
0.40000000000000013 
0.30000000000000016 
0.20000000000000015 
0.10000000000000014 
1.3877787807814457e-16 
+2

возможно дубликат [Является плавающей точкой математике сломана?] (Http://stackoverflow.com/questions/588004/is-floating- point-math-broken) –

+0

Спасибо за вашу ссылку –

ответ

5

Это связано с плавающей запятой арифметических операций. Вы можете округлить поплавок с помощью toFixed

Обновить код для

window.onload = myFunction ; 
function myFunction(){ 
var i = 0 ; 
var counter = 1 ; 
while(i < counter){ 
    alert(counter); 
    counter = (counter - 0.1).toFixed(1) ; 
} 
} 
Смежные вопросы