gmp_init() - gmp库(多精度计算)
gmp_init()
(PHP 4 >= 4.0.4, PHP 5, PHP 7)
Create GMP number
说明
gmp_init(mixed $number[,int $base= 0]): GMPCreates a GMP number from an integer or string.
参数
$numberAn integer or a string. The string representation can be decimal, hexadecimal or octal.
$baseThe base.
The base may vary from 2 to 36. If base is 0(default value), the actual base is determined from the leading characters: if the first two characters are0xor0X, hexadecimal is assumed, otherwise if the first character is "0", octal is assumed, otherwise decimal is assumed.
返回值
GMP 数值资源.
更新日志
版本 | 说明 |
---|---|
5.3.2 | The$basewas extended from 2 to 36, to 2 to 62 and -2 to -36. |
注释
Note:To use the extended base introduced in PHP 5.3.2, then PHP must be compiled against GMP 4.2.0 or greater.
范例
Creating GMP number
注释
Note:It is not necessary to call this function in order to use integers or strings in place of GMP numbers in GMP functions(such as with gmp_add()). Function arguments are automatically converted to GMP numbers, if such conversion is possible and needed, using the same rules as gmp_init().
I discovered that the gmp functions use [0-9a-f] up to base 16, but [0-9A-Za-z] (i.e. upper case first) from bases 17 to 62. This differs from most of the base-62 implementations I've found that tend to use lower case first.
Here's a way to parse a decimal (eg 3.25) into an integer and exponent:
Note: Leading zeros will make gmp_init parse this as octal. Thus gmp_init(010) becomes 8. $a=010; //8 $b="010" + 0; //10 $c=gmp_strval(gmp_init(010)); //8 $d=gmp_strval(gmp_init("010")); //8 This behaviour is inconsistent: either $d should equal $b, or $b should equal $a.
Unless the base is 16, gpm_init will fail if the string begins with "0b". > php -r '$v = gmp_init("b83", 17); print("$v\n");' Resource id #4 > php -r '$v = gmp_init("0b83", 17); print("$v\n");' [nothing prints] In may case, where I am explicitly specifying the base, the solution is to apply ltrim first: > php -r '$v = gmp_init(ltrim("0b83", "0"), 17); print("$v\n");' Resource id #4
gmp_* functions don't accept strings with a leading '+':
If you call a gmp_* function directly with an interger as parameter, this integer MUST NOT be 0: for($i=-1;$i
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!