bug*_*com 12 php string biginteger
我希望能够将大的int转换为完整的字符串派生词.
例如.
$bigint = 9999999999999999999;
$bigint_string = (string) $bigint;
var_dump($bigint_string);
Run Code Online (Sandbox Code Playgroud)
输出
string(7) "1.0e+19"
Run Code Online (Sandbox Code Playgroud)
但是我需要
string(19) "9999999999999999999"
Run Code Online (Sandbox Code Playgroud)
请不要告诉我,我最初应该将$ bigint值设置为字符串.这不是一种选择.我真的被卡住了,不知道它是否可能?
hak*_*kre 13
你实际应该确保键入你的意思:
$bigint = 9999999999999999999;
Run Code Online (Sandbox Code Playgroud)
不是PHP整数而是浮点数:
float(1.0E+19)
Run Code Online (Sandbox Code Playgroud)
如果你愿意的话
$bigint = (int) 9999999999999999999;
Run Code Online (Sandbox Code Playgroud)
你实际上会设置一个整数,但它不是你可能预期的数字:
int(-8446744073709551616)
Run Code Online (Sandbox Code Playgroud)
你可能已经猜到了把它变成字符串完全没问题.因此,当你在代码中写入数字时要小心,你实际上写的是你的意思.
再次看到这一行:
$bigint = 9999999999999999999;
Run Code Online (Sandbox Code Playgroud)
试着了解你实际写的是什么.它根本不是一个整数,因为PHP会把它变成一个浮点数.请参见示例#4 整数手册页中 64位系统上的整数溢出.
如果你需要更高的精度,请查看GNU Multiple Precision,它可能有你想要的东西.但是,这不会改变如何在PHP中编写数字:
$bigint = gmp_init("9999999999999999999");
$bigint_string = gmp_strval($bigint);
var_dump($bigint, $bigint_string);
Run Code Online (Sandbox Code Playgroud)
输出:
resource(4) of type (GMP integer)
string(19) "9999999999999999999"
Run Code Online (Sandbox Code Playgroud)