Я пишу библиотеку PHP, которая имеет класс Number, который использует расширение bcmath
для произвольной точности.
У меня есть два вопроса:
Насколько медленнее bcmath по сравнению с использованием встроенных типов int и float?
bcmath
имеет необязательный масштабный аргумент (по умолчанию он bcmath
3 цифрам). Для класса общего назначения, который может использовать любой человек, что было бы хорошим уровнем точности? Как такие языки, как Perl (которые имеют произвольные числа точности), имеют дело со шкалой?
Я бы определил, какой диапазон чисел вам нужно поддерживать. Встроенные значения будут быстрее любого значения, которое требует вычисления и преобразования в / из другого формата.
Встроенные целые числа хороши до 32 бит в любой системе, некоторые системы поддерживают 64-битные значения. Вы можете проверить, что поддерживает ваша система, проверив значение константы PHP_INT_MAX и определите, хотите ли вы после этого нанести накладные расходы математической библиотеки. Для систем с 32-битными целыми значениями все выше 32 бит будет автоматически преобразовано в float. Это не проблема, если вы не используете встроенные функции для таких вещей, как round, printf, module и т. Д.
Я был немного этим, используя модуль, чтобы разделить трафик, поступающий на мой сайт, а также с целыми числами форматирования, используя% d в sprintf: http://af-design.com/blog/2009/10/28/php-64-bit- целое-модуль, почти /