rican7 / 数学家
此包已 废弃 且不再维护。未建议替代包。
一个用于更简单、更可靠的数学运算的PHP数学库...即使是对于大数
0.2.0
2014-04-28 16:40 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- ext-bcmath: *
- ext-gmp: *
- phpunit/php-code-coverage: 2.0.x
- phpunit/phpunit: 3.7.x
- squizlabs/php_codesniffer: 1.5.x
Suggests
- ext-gmp: Fast math operations with big number support (abritary precision)
This package is not auto-updated.
Last update: 2021-10-30 00:15:14 UTC
README
Mathematician是一个用于更简单、更可靠的数学运算的PHP数学库...即使是对于大数。
面对现实:在PHP中使用数字的表现不佳。这个库旨在改变这一点。此库的设计目标是使处理数字更容易,无论大小/精度或系统加载的扩展是什么。便携性和易用性。
为什么?
为什么要创建或使用这样的库?好吧,在PHP中处理数字确实很费劲。
与许多语言(Python、Ruby等)不同,当你用一个整数除以另一个整数时,你得到的结果类型是:float
。实际上,实际上并没有JavaScript中那样的//
操作来进行整数除法。
不仅如此,当你想处理大于PHP_INT_MAX
的数字时会发生什么?当给PHP_INT_MAX
加1
时...你又会得到一个浮点数。这意味着你立刻失去了精度。尝试将其转换回整数,你会得到一个负数(感谢溢出)。这很糟糕...所以你自然会转向两个用于处理大数的扩展之一:bcmath
或gmp
。现在你的应用程序/库依赖于一个编译的扩展,并且更不便携,更不用说它们的功能并不相同(在BC Math中玩二进制操作很有趣)。
无论如何,我想你已经明白了这里的意思。这个库就是基于我对上述情况的挫败感而诞生的。希望这个库能减轻你的痛苦,让你不必经历我所经历的事情。 :P
安装
- 获取Composer
- 将 "rican7/mathematician" 添加到你的composer.json中:
composer require rican7/mathematician 0.x.x
- 包含Composer自动加载器:
<?php require 'vendor/autoload.php';
使用
使用mathematician很简单
use Mathematician\Number; $number = Number::factory(100); // Basic arithmetic $number->add(10); // 110 $number->sub(10); // 90 $number->mul(10); // 1000 $number->div(10); // 10 // Powers $number->pow(2); // 10000 $number->powMod(2, 3); // 1 $number->sqrt(); // 10 $number->mod(40); // 20 // Bitwise $number->bitAnd(50); // 32 $number->bitOr(50); // 118 $number->bitXor(50); // 86 $number->bitNot(); // -101 $number->bitShiftLeft(2); // 400 $number->bitShiftRight(2); // 25 // Big numbers!!!! $big_number = Number::factory(PHP_INT_MAX) $big_number->pow(2)->toString(); // 85070591730234615847396907784232501249
待办事项
- 首次发布!
- 通过魔术方法重写实现更干净的克隆/序列化
- 实现十进制适配器
- 更多辅助方法