rican7/数学家

此包已被弃用且不再维护。未建议替代包。

这是一个PHP数学库,用于更简单、更可靠的数学操作...即使是对于大数

0.2.0 2014-04-28 16:40 UTC

This package is not auto-updated.

Last update: 2021-10-30 00:15:14 UTC


README

Build Status Total Downloads Latest Stable Version

Mathematician是一个PHP数学库,用于更简单、更可靠的数学操作...即使是对于大数。

面对现实:在PHP中处理数字的表现不佳。这个库旨在改变这一点。这个库的设计目标是使处理数字更加容易,无论数字的大小/精度如何,或者系统加载了哪个扩展。便携性和易用性。

为什么?

为什么创建或使用这样的库?好吧,在PHP中处理数字非常困难。

与许多语言(Python、Ruby等)不同,当你用一个整数除以一个整数时,你会得到一个结果,其类型为:float。实际上,实际上并没有JavaScript中那样的//操作来进行整数除法。

不仅如此,当你想处理比PHP_INT_MAX更大的数字时会发生什么?当给PHP_INT_MAX1时...你再次得到一个浮点数。这意味着你立刻失去了精度。尝试将其转换回整数,你会得到一个负数(感谢溢出)。这很糟糕...所以你自然会转向两个用于处理大数的扩展之一:bcmathgmp。好吧,现在你的应用程序/库依赖于一个编译的扩展,且更不便携,更不用说它们在功能上并不相同(在BC Math中享受二进制操作吧)。

无论如何,我想你明白这里的观点。这个库正是因为我对上述问题的挫败感而产生的。希望这个库能减轻你的痛苦,让你不必经历我所经历的事情。 :P

安装

  1. 获取Composer
  2. "rican7/mathematician"添加到你的composer.json中: composer require rican7/mathematician 0.x.x
  3. 包含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

待办事项

  • 第一次发布!
  • 通过魔术方法覆盖实现更干净的克隆/序列化
  • 实现十进制适配器
  • 更多辅助方法