Здравствуйте. Сегодня случайно обнаружил что
0.29 * 100 = 28.999999999999996 , на javascript.
Был в шоке, подумал, что за бред, и на чистой html странице, создал скрипт:
var result = "";
for(i=0;i<100;i++){
number = "0."+i;
result+= "0."+ i +" * 100 = " + (parseFloat(number) * 100) + "<br>\r\n";
}
document.body.innerHTML = result;
(это засунуть в тело body, иначе не будет работать/вставляться в DOM, так как он еще не готов).
Из ста перебранных числ (0.01, 0.02, 0.03, 0.04, 0.05, ... 0.98, 0.99) при умножении их на сто, оказалось следующее
:
0.14 * 100 = 14.000000000000002
0.28 * 100 = 28.000000000000004
0.29 * 100 = 28.999999999999996
0.55 * 100 = 55.00000000000001
0.56 * 100 = 56.00000000000001
0.57 * 100 = 56.99999999999999
0.58 * 100 = 57.99999999999999
Что за бред?
С остальными перебранными цифрами, все нормально. Запускал в разных браузерах, даже на разных операционках, все так же! Открыл онлайн калькуляторы (первые ссылки в поисках через гугл), они тоже такое выдают, так как построенные в основном на JavaScript.
Кто что знает по этому поводу? Спасибо.