Это как так???

  • Автор темы Автор темы Den1xxx
  • Дата начала Дата начала

Den1xxx

Разрушитель (V)
Сообщения
135
Реакции
71
Баллы
1 084
print (int)((0.1 + 0.7) * 10);
Screenshot_2021-05-27 Файловый менеджер.png
 
Последнее редактирование:
Ошибка возникают из-за того, что числа с плавающей запятой представлены двоичной системой счисления. Числа 0.1 и 0.7 нельзя представить в виде четкой двоичной дроби, они получаются бесконечными, что приводит к их "обрезанию" и при преобразовании они теряют точность. Результат сложения будет что-то типа 0.79999, что при умножении даст - 7.99999. int отбросит дробную часть, что в результате даст 7 вместо 8.
PHP:
<?php
echo number_format(((0.1 + 0.7) * 10),25);

7.9999999999999991118215803
 
image.png


PS: print (int)7.9999999;
 
правильно в таких случаях использовать математические функции.
Код:
print bcadd(0.1, 0.7, 1)*10;

8
 

Вложения

  • developer6.jpeg
    developer6.jpeg
    87,4 КБ · Просмотры: 13
Последнее редактирование:
Назад
Верх