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

待办事项

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