Доброго времени суток. Поясните, пожалуйста, почему Код (Text): print (int)((0.1 + 0.7) * 10); , данный код выводит 7? Если удалить int получается 8. Заранее благодарен.
(int) в PHP выполняет операцию cast(signed longint) - то есть, по сути, отбрасывает дробную часть. (0.1 + 0.7)*10 может быть представлено как что-то наподобие 8 + 1E-N (выглядит как 8.00..01) или 8 - 1E-N (выглядит как 7.99..99), где N - точность представления стандартного вещественного типа данных - double по умолчанию, для PHP его точность составляет 1E-14. Это означает, что при выводе числа как вещественного (0.1+0.7)*10 будет распознаваться как 8, но при отбрасывании дробной части, в случае, если эта сумма была представлена как 7.99...99, на выходе получится 7 --- Добавлено --- https://php.ru/manual/language.types.float.html#warn.float-precision
Код (Text): php -r 'echo 36 - 35.99;' 0.009999999999998 вещественные числа в PHP имеют неточное представление. можно только понять это и простить. исправить нельзя. --- Добавлено --- http://qaru.site/questions/577049/php-rounding-error https://habr.com/post/112953/