PHP действует странно в моей программе

Сегодня я начал писать небольшой PHP-код, и это оставило меня в замешательстве, и поэтому я припарковался здесь.

<?php echo (int) ((0.5 + 0.3) * 10); // Outputs 8 as expected <?php echo (int) ((0.1 + 0.7) * 10); // Outputs 7 . How ???? 

Может ли кто-нибудь ответить с подробным объяснением?

Related of "PHP действует странно в моей программе"

Это связано с тем, что представление с плавающей запятой в компьютерах не является точным для некоторых чисел. Как уже было сказано в комментариях, 0.7 представляется внутренне как 0.699999 или около того.

Есть два веб-сайта, которые постоянно появляются в таких вопросах:

  1. http://floating-point-gui.de/
  2. http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

Я предпочитаю первый, поскольку он немного легче для ученых. Прочтите эту информацию, и вы поймете.