PHP:如何将bigint从int转换为字符串?

标签 php string biginteger

我希望能够将大整数转换为其完整字符串导数。

例如。

$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/

相关文章:

php - https ://to Http rewrite in . htaccess

php - 如果行存在则更新或如果不基于 user_id 则插入

python - 在字符之间查找多个字符串

Python:大整数键的快速字典

java - 如何在 Java 中将两个非常大的数字相加,无论其大小如何,而不使用 BigInteger 数据类型?

php - Cakephp 的 JsonView

PHP 代码...查询后我需要更新表

javascript - 拆分 div 文本,不使用制表符空格

c - 类似于 strstr 的高效版本

c - OpenSSL 的 BN_bn2bin 函数出现问题