ffmg/myoddweb.bignumber.php

无外部依赖的大数

0.1.603 2016-01-12 15:23 UTC

This package is not auto-updated.

Last update: 2024-09-18 17:53:04 UTC


README

A php bignumber class that does not have any external dependency. Based on the myoddweb.bignumber.cpp project

状态

Build Status Latest Stable Version GitHub license

用法

在你的项目中

Composer

您可以使用 Composer 安装此库。

{
    "require": {
        "ffmg/myoddweb.bignumber.php": "0.1.*"
    }
}

然后只需在您的脚本中包含 "require_once "vendor/autoload.php""(或您使用的任何 composer 路径)。

您还可以直接浏览

直接下载

只需将文件 "path/to/code/BigNumber.php" 包含到您的项目中。
其他文件只是测试和此项目。

// in your script
include "path/to/code/BigNumber.php"

// use it
$lhs = new \MyOddWeb\BigNumber( 10 );
$lhs = new \MyOddWeb\BigNumber( 10 );
$sum = $lhs->Add( $rhs );	// = 20

// good times...

示例

// without composer 
include "path/to/code/BigNumber.php"

// with composer
include "MyOddweb\BigNumber\BigNumber.php"

简单用法

查看各种测试以获取更多示例代码。

使用字符串的大数

// using strings
$x = new \MyOddWeb\BigNumber("18446744073709551615");
$y = new \MyOddWeb\BigNumber("348446744073709551615");
$sum = $x->Add( $y )->ToString();

整数

// using int
$x = new \MyOddWeb\BigNumber(17);
$y = new \MyOddWeb\BigNumber(26);
$sum = $x->Add( $y )->ToInt();

双精度浮点数

// using doubles
$x = new \MyOddWeb\BigNumber(17.0);
$y = new \MyOddWeb\BigNumber(26.0);
$sum = $x->Add( $y )->ToDouble();

转换为其他基数

// output number to base 2.
$x = new \MyOddWeb\BigNumber(5);
$base2 = $x->ToBase( 2 );	// =101 (base 2)

// fraction/real numbers
// output number to base 8 with decimals.
$x = new \MyOddWeb\BigNumber(10.8);
$base2 = x->ToBase( 8, 2 );	// =12.63 (base 8)

您可以从基数 2 转换到基数 62

一行操作

整数

$x = new \MyOddWeb\BigNumber("17")->Add(\MyOddWeb\BigNumber("26"))->ToInt();

双倍

$x = new \MyOddWeb\BigNumber(1.234)->Add(\MyOddWeb\BigNumber(2.345))->ToDouble();

创建单个项目

$x = (new \MyOddWeb\BigNumber( 123 ) )->Log( 20 )->Sub(12)

或者您也可以不使用 'new' 参数做相同的事情。

$x = \MyOddWeb\BigNumber( 123 )->Log( 20 )->Sub(12)

函数

数学函数

  • Add( number ) : 将 'number' 添加到 'this' 数。
  • Sub( number ) : 从 'this' 数减去 'number'。
  • Mul( number ) : 将 'number' 乘以 'this' 数。
  • Div( number ) : 用 'this' 除以 'number' 数。
  • Add( number ) : 将 'number' 添加到 'this' 数。
  • Factorial() : 此数的阶乘,(!n)
  • Mod( number ) : 'this' 数的模,(n % m)。除法的余数。
  • Quotient( number ) : 除 'this' 数以 'number' 的商。
  • Pow( number ) : 'this' 的 'number' 次幂(n * n * n * ...)。
    • 负数。
  • Exp() : e 的 'this' 次幂
  • Ln() : 'this' 的 e 底对数。
  • Root( number ) : 'this' 数的第 n 次根。
  • Sqrt() : 'this' 数的平方根。

其他函数

  • IsNeg() : 如果 'this' 数是负数或不是。

  • IsZero() : 如果 'this' 数是零或不是。

  • IsNan() : 如果 'this' 数不是数字或不是,(NAN)。例如,这是除以零或负阶乘的结果。

  • IsOdd() : 如果 'this' 数是奇数。

  • IsEven() : 如果 'this' 数是偶数。

  • Compare( number ) : -ve = 较小 / +ve = 较大 / 0 = 相同。

    • IsEqual( number ) : 如果 'this' 等于 'number'。
    • IsUnequal( number ) : 如果 'this' 不等于 'number'。
    • IsGreater( number ) : 如果 'this' 大于 'number'。
    • IsLess( number ) : 如果 'this' 小于 'number'。
    • IsGreaterEqual( number ) : 如果 'this' 大于或等于 'number'。
    • IsLessEqual( number ) : 如果 'this' 小于或等于 'number'。
  • IsInteger() : 如果 'this' 数是正数或负数的整数。

  • ToInt() : 转换为 int。

  • ToDouble() : 转换为 double。

  • ToString() : 将数字输出为字符串,(如果想要限制小数位数,请使用 ToBase( ... ) 函数)。

  • ToBase( base = 10[, precision=100] ) : 转换为字符串。

    • 您可以将一个基数传递给转换,默认是基数 10。允许的基数是 2-62。值是 0-9 然后是 A-Z 然后是 a-z
    • 您可以使用精度来限制字符串输出中返回的小数位数。
  • Abs():获取数字的绝对值

  • Trunc(precision):截断数字,去除小数部分。(+/-n.xyz = n)

  • Ceil(precision):向上取整(2.1 = 3 / -2.1 = -2)

  • Floor(precision):向下取整(2.1 = 2 / -2.1 = -3)

  • ToDegree( ... ):将指定精度的 从弧度转换为度。

  • ToRadiant( ... ):将指定精度的 从度转换为弧度。

常量

  • e():[欧拉数](https://en.wikipedia.org/wiki/E_%28mathematical_constant%29)(精确到150位小数)。
  • pi():[圆周率](https://en.wikipedia.org/wiki/Pi)(精确到150位小数)。

待办

查看myoddweb.bignumber.cpp项目,函数在此处添加后会在cpp项目中添加。