Обычный совет, как обращаться с деньгами и другими десятичными числами, где точность имеет решающее значение, - использовать целые числа или строки (плюс библиотеки произвольной точности), и это имеет смысл, если вы понимаете, как работают математические вычисления с плавающей запятой. Однако у меня нет под рукой какого-либо конкретного примера c, чтобы проиллюстрировать это, поскольку каждый неправильный расчет, который я обнаружил в дикой природе, был связан с какой-то другой ошибкой: наивными сравнениями с использованием ==
, отсутствием правильного округления при отображении результаты, явно неправильные logi c (например, расчет налогов с использованием непоследовательного алгоритма, который также не работает на бумаге) ... Я провел некоторое исследование, и результаты применимы только к C / C ++ (float / double с разной точностью ) или были просто пояснениями, почему нельзя доверять равенству двух чисел с плавающей запятой.
Можете ли вы поделиться автономным фрагментом кода PHP с тщательно подобранными числами с плавающей запятой и правильным алгоритмом, который отображает неправильный результат, явно вызванный ограничениями с плавающей запятой?
Отказ от ответственности: я не собираюсь спорить, опровергать или опровергать что-либо, мне, честно говоря, нужен пример для моего инструментария.