number_format没有舍入

时间:2014-09-24 12:43:23

标签: php

在PHP中是否有number_format替代方法允许我选择千位和小数分隔符,同时保留小数位数?例如。像这样的东西:

number_format_alternative( '1234.617', ',', '.' );

>1 234,617

number_format_alternative( '120.0', ',', '.' );
>120.0

我意识到我可以通过使用一个可笑的高数字小数,并从右边修剪所有零来实现几乎相同的事情,尽管第二个例子看起来像:

number_format_alternative( 120.0, ',', '.' );
>120

编辑:这就是我最终要做的事情:

function numberOfDecimals( $number ) {
   return strlen(strstr(rtrim(sprintf('%.10F', $number), '0'), '.'))-1;
}

1 个答案:

答案 0 :(得分:1)

由于您要将数字作为字符串输入到函数中,因此您可以使用正则表达式查看小数点后面的位数,由'表示。'在这种情况下,然后执行number_format并将$decimals参数设置为您刚刚计算的数字。

一个可行的正则表达式是\.\d+,然后减去长度以减去1以找到小数位数,你可以看看我认为性能会更差的背后。可能需要进行一些测试,我相信会有其他正则表达式可以使用。