Какова точность для PHP-библиотеки bcmath?

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

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

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

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

1 ответ

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

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

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

Другие вопросы по тегам