Какова точность для PHP-библиотеки bcmath? - PullRequest
1 голос
/ 15 февраля 2010

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

У меня есть два вопроса:

  1. Насколько медленнее bcmath по сравнению со встроенными типами int и float?

  2. bcmath имеет необязательный аргумент scale (по умолчанию 3 цифры). Для класса Number общего назначения, который может использовать любой, какой будет хороший уровень точности? Как языки, такие как Perl (с произвольными точными числами), справляются с масштабом?

1 Ответ

1 голос
/ 18 февраля 2010

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

Встроенные целые числа хороши до 32 бит в любой системе, некоторые системы поддерживают 64-битные значения. Вы можете проверить, что поддерживает ваша система, проверив значение константы PHP_INT_MAX и определив, хотите ли вы после этого переносить накладные расходы на библиотеку математики. Для систем с 32-разрядными целыми числами все, что больше 32-разрядных, будет автоматически преобразовано в число с плавающей точкой. Это не проблема, если вы не используете встроенные функции для таких вещей, как round, printf, modulus и т. Д.

Меня немного поразило использование модуля для разделения трафика, приходящего на мой сайт, а также форматирования целых чисел с использованием% d в sprintf: http://af -design.com / blog / 2009/10/28 / php- 64-разрядное целое-модуль, почти /

...