【发布时间】:2017-06-22 05:28:26
【问题描述】:
我在格式化十进制数时遇到问题,假设我可以有两个十进制数,其中十进制数可以在第 18 位之前或之后,格式如下:
$num1 = 12345678912345678912345.52458
$num2 = 123.54893256666666
对于以上两个数字,我想要的结果是基于
$num1: 如果小数点在第 18 位之后,那么小数点应该在 18 位之后,并且在这 2 位之后仅作为精度
$num2: 如果小数点在第 18 位之前,那么小数点应该是位置,但精度应该只有小数点后 2 位
想要的:
$num1 = 123456789123456789.00
$num2 = 123.54
我已经尝试过这个号码number_format(),如下所示:
<?php
$num1 = 12345678912345678912345.52458;
$num2 = 123.54893256666666;
$num1 = number_format($num1,2,'.',''); //it is not working
$num2 = number_format($num2,2,'.',''); //it is working
echo $num1."<br>".$num2;
输出:
for $num1 = 12345678912345679593472.00 where it should comes like 123456789123456789.00
for $num1 = 123.55 that is ok
请帮助我不知道如何为 $num1 使用 number_format()
【问题讨论】:
-
PHP 无法处理那么大的数字。执行
echo PHP_INT_MAX;并查看系统的最大大小(取决于您使用的是 32 位还是 64 位版本)。 -
但我的数字是十进制的?将
PHP_INT_MAX工作 -
是的。数字就是数字。否则,如果您只需要在一个太大的整数后添加一个
.0,那将不是问题。 -
它给了我结果 2147483647
-
那么您正在运行 32 位版本的 PHP,这是它可以处理的最大数量。为什么你需要一个这么大的数字,开始?它来自哪里,你想做什么?
标签: php number-formatting decimalformat