Точность математических операций в PHP 5, PHP 7

Разрабатывая калькулятор на PHP 5+, может ли программист получать результаты, не задумываясь об ошибках округления и неточном представлении десятичных чисел?

Я имею в виду встроенные совершенные способы получения, например, результатов с заданной точностью.

Или каждая операция, как $x = $y * $z + 0.77 должны требовать разработки дополнительных проверок в алгоритме типа округления (для избежания ошибок)?

Так что ошибки или неточности — до встроенного ядра PHP или до разработчика?
PHP 7 имеет 64-битную поддержку, что является улучшением в этом направлении (точность вычислений)?

1

Решение

Разрабатывая калькулятор на PHP 5+, может ли программист получать результаты, не задумываясь об ошибках округления и неточном представлении десятичных чисел?

Простой ответ No,

Выполнение арифметики на десятичной основе с использованием двоичной машины, такой как компьютер, может и всегда будет приводить к некоторой ошибке.

Многие детали объясняются в этой статье, это довольно сложная тема.
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

Простой пример из десятичного мира:

Дробь 1/3 не может быть выражена как конечное число с плавающей запятой в десятичной записи. Часто мы пробуем это, написав 0.333333333... но это не на 100% точно.

То же самое относится к арифметике двоичных чисел.

[Редактировать] Если вам нужна очень высокая степень точности, вы должны взглянуть на phps BC math functions http://php.net/manual/en/ref.bc.php

1

Другие решения

Я не думаю, что есть что-то в PHP 7 это изменит это. AS @maxhb указывает, что арифметика с плавающей запятой по своей сути является неточной, поэтому вы должны учитывать ошибки округления.

64-разрядные возможности принципиально не изменяют это.

1

По вопросам рекламы [email protected]