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

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

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

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

user2543953

Ответов: 2

Ответы (2)

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

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

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

Простой ответ: Нет.

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

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

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

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

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

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

2022 WebDevInsider