Загадочная ошибка вычисления при умножении на 100

Следующий сценарий содержит очень странную ошибку. Я хочу проверить, является ли значение положительным целым числом. Для этого я умножаю на 100, чтобы округлить значение до десятичной дроби. Если я проверяю 0,07, сценарий вычисляет не значение 7, а значение 7.00000001. Я мог бы округлить значение, но я хотел бы знать, почему значение рассчитывается таким образом.

<script type="text/javascript">

  var isPositiveInt = function(i) {
        i = i*100;  
      return ((i % 1) == 0 && i >= 0);
  }; 

</script>

<a href="#" onclick="alert(isPositiveInt('0.07')); return false;">Try it out!</a>

0,05, 0,06 и 0,08 работают нормально. Но что происходит с 0,07? Я был бы счастлив, если бы кто-нибудь мог мне это объяснить.

5
задан Tobias Bambullis 26 June 2011 в 19:37
поделиться