Разрабатывая калькулятор на PHP 5+, может ли программист получать результаты, не задумываясь об ошибках округления и неточном представлении десятичных чисел?
Я имею в виду встроенные совершенные способы получения, например, результатов с заданной точностью.
Или каждая операция, как $x = $y * $z + 0.77
должны требовать разработки дополнительных проверок в алгоритме типа округления (для избежания ошибок)?
Так что ошибки или неточности — до встроенного ядра PHP или до разработчика?
PHP 7 имеет 64-битную поддержку, что является улучшением в этом направлении (точность вычислений)?
Разрабатывая калькулятор на PHP 5+, может ли программист получать результаты, не задумываясь об ошибках округления и неточном представлении десятичных чисел?
Простой ответ No
,
Выполнение арифметики на десятичной основе с использованием двоичной машины, такой как компьютер, может и всегда будет приводить к некоторой ошибке.
Многие детали объясняются в этой статье, это довольно сложная тема.
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
Простой пример из десятичного мира:
Дробь 1/3 не может быть выражена как конечное число с плавающей запятой в десятичной записи. Часто мы пробуем это, написав 0.333333333...
но это не на 100% точно.
То же самое относится к арифметике двоичных чисел.
[Редактировать] Если вам нужна очень высокая степень точности, вы должны взглянуть на phpsBC math functions
http://php.net/manual/en/ref.bc.php
Я не думаю, что есть что-то в PHP 7
это изменит это. AS @maxhb указывает, что арифметика с плавающей запятой по своей сути является неточной, поэтому вы должны учитывать ошибки округления.
64-разрядные возможности принципиально не изменяют это.