此包已被放弃,不再维护。作者建议使用 brick/math 包。

一个数学库,提供大数功能

1.2.1 2020-01-05 04:49 UTC

This package is auto-updated.

Last update: 2020-01-05 04:54:43 UTC


README

请注意: 此包已被放弃。请过渡到 brick/math

Moontoast Math 库

Source Code Latest Version Software License Build Status Coverage Status Total Downloads

Moontoast\Math 可以用于处理大于(或通过数学计算可能变得大于)PHP给定系统最大整数值的整数。在64位系统上,这个数字是 9223372036854775807。在32位系统上,它是 2147483647。当溢出此边界时,PHP将数字转换为浮点数,减少精度(参见整数的 PHP 手册条目)。

Moontoast\Math 提供了对 bcmath 扩展的简单包装,允许对数字字符串执行数学计算,超出系统整数值范围,并保持任意精度以进行更精确的计算。

安装

首选的安装方法是使用 Composer

composer require moontoast/math

示例

$bn = new \Moontoast\Math\BigNumber('9,223,372,036,854,775,808');
$bn->multiply(35);

var_dump($bn->getValue());
var_dump($bn->convertToBase(16));

这将产生以下输出

string(21) "322818021289917153280"
string(18) "118000000000000000"

您可能想使用 BigNumber 来处理 UUID,它是一个无符号 128 位整数。例如

$uuid = \Moontoast\Math\BigNumber::convertToBase10('ff6f8cb0c57d11e19b210800200c9a66', 16);

此实用程序将 UUID 从十六进制(基 16)表示转换为无符号 128 位整数(十进制,基 10)的字符串表示。现在,如果您愿意,可以使用它创建一个 BigNumber 对象以执行计算。

$bn = new \Moontoast\Math\BigNumber($uuid);
echo $bn; // 339532337419071774305803111643925486182

许可

版权所有 © 2013-2020 Moontoast,Inc。

根据 Apache License,版本 2.0(“许可”)许可;除非根据适用法律或书面同意,否则不得使用此文件,除非符合许可。您可以在以下位置获得许可副本:

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可下分发的软件按“原样”基础分发,不提供任何形式的质量保证或条件,无论是明示的还是暗示的。有关许可的具体语言和限制,请参阅许可。