2010-02-15 2 views
1

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

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

  1. Насколько медленнее BCMath по сравнению с использованием встроенных в междунар и плавать типов?

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

ответ

1

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

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

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

Смежные вопросы