number_format PHP 中不准确

number_format inaccurate in PHP

提问人:Juan Ignacio Pérez Sacristán 提问时间:9/8/2016 最后编辑:CommunityJuan Ignacio Pérez Sacristán 更新时间:9/8/2016 访问量:201

问:

PHP函数number_format对于大数字似乎并不可靠。这可能是一个四舍五入的问题,正如 PHP 上解释的那样 - number_format问题

函数 money_format() 的行为类似。

情况是这样的:

$n = 1000000000000000001;

echo “\nn = $n”;

$nFormat = number_format($n, 0, '.', ',');

echo “\nn格式 = $nFormat”;

$nMFormat = money_format('%!i', $n);

echo “\nnMFormat = $nMFormat”;

结果是:

n = 1000000000000000001

n格式 = 1,000,000,000,000,000,000

nMFormat = 1000000000000000000.00

PHP中有大数字的number_format函数吗?我应该自己编码吗?我是否必须将大数字作为字符串进行格式化处理?

php 数字格式化浮 点精度 bignum

评论

1赞 Mark Baker 9/8/2016
您的$n是被视为浮点数还是整数?如果您使用的是 32 位 PHP,这将超过最大 int 值,因此它将是一个浮点数
0赞 Juan Ignacio Pérez Sacristán 9/8/2016
我怎么知道呢?PHP 在 Ubuntu 服务器上运行:Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-77-generic x86_64)
0赞 Juan Ignacio Pérez Sacristán 9/8/2016
PHP_INT_SIZE = 8 PHP_INT_MAX = 9223372036854775807
2赞 Noman 9/8/2016
你的答案就在这里。stackoverflow.com/a/6936191/3081659
0赞 Juan Ignacio Pérez Sacristán 9/8/2016
我想我需要使用一个大整数库 stackoverflow.com/questions/4427020/...来处理这么大的数字。谢谢很多!

答: 暂无答案