Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   почему 1 + 0.2 = 1.2000000000000002 (https://javascript.ru/forum/events/29340-pochemu-1-0-2-%3D-1-2000000000000002-a.html)

cyber 24.06.2012 19:44

почему 1 + 0.2 = 1.2000000000000002
 
for (var i = 1; i <= 2; i = i+0.1){
        
        
         alert(i);
        
        }

dmitriymar 24.06.2012 19:45

потому что вычисления в языке не точные и никогда точными не были

cyber 24.06.2012 19:50

эх пичально, но в этом случае можно обойти этот глюк=)

beard 24.06.2012 19:57

конечно, нужно ответить себе, зачем мне такое представление числа 1.2000000000000002

devote 25.06.2012 13:16

alert( ( 1 + 0.2 ).toFixed(1) );


for (var i = 1; i <= 2; i = i+0.1){
    alert(i.toFixed(1));
}

cyber 25.06.2012 18:55

Цитата:

Сообщение от devote (Сообщение 183904)
alert( ( 1 + 0.2 ).toFixed(1) );


for (var i = 1; i <= 2; i = i+0.1){
    alert(i.toFixed(1));
}

я сделал так =)
for (var i = 10; i <= 20; i++){
         
          x = i/10;
        
        }

beard 25.06.2012 20:08

ну нормально :D чем не вариант

cyber 25.06.2012 21:38

Цитата:

Сообщение от beard (Сообщение 184038)
ну нормально :D чем не вариант

просто я понял что серьезные вычисления на js лучше не ложить=)

Gvozd 25.06.2012 21:42

Цитата:

Сообщение от cyber
просто я понял что серьезные вычисления на js лучше не ложить=)

тогда уж лучше вообще нигде их не делать
практически в любом языке дефолтные типы с плавающей запятой ведут себя именно так

cyber 25.06.2012 21:45

Цитата:

Сообщение от Gvozd (Сообщение 184075)
тогда уж лучше вообще нигде их не делать
практически в любом языке дефолтные типы с плавающей запятой ведут себя именно так

хм...
познавательно, почему то мои преподы об этом умолчали :)


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