我希望能够将大整数转换为其完整字符串导数。
例如。
$bigint = 9999999999999999999;
$bigint_string = (string) $bigint;
var_dump($bigint_string);
输出
string(7) "1.0e+19"
但我需要
string(19) "9999999999999999999"
请不要告诉我最初应该将 $bigint 值设置为字符串。那不是一个选择。我真的很困惑,不知道这是否可能?
最佳答案
您实际上应该确保输入您的意思:
$bigint = 9999999999999999999;
不是 PHP 整数而是 float :
float(1.0E+19)
如果你愿意的话
$bigint = (int) 9999999999999999999;
实际上您会设置一个整数,但它不会是您期望的数字:
int(-8446744073709551616)
正如您可能已经猜到的那样,将其转换为字符串完全没有问题。因此,当您将数字写入代码时,请注意您实际上写的是您的意思。
再次看到这一行:
$bigint = 9999999999999999999;
尝试理解你实际写的内容。它根本不是整数,因为 PHP 会将其转换为 float 。请参阅 integer manual page 中的示例 #4 64 位系统上的整数溢出。 .
如果您需要更高的精度,请查看GNU Multiple Precision ,它可能有您正在寻找的东西。但是,这不会改变在 PHP 中编写数字的方式:
$bigint = gmp_init("9999999999999999999");
$bigint_string = gmp_strval($bigint);
var_dump($bigint, $bigint_string);
输出:
resource(4) of type (GMP integer)
string(19) "9999999999999999999"
关于PHP:如何将bigint从int转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7151236/