Php 无舍入的数字格式

Php 无舍入的数字格式,php,Php,PHP中是否有一种number\u格式替代方法,允许我选择千和小数分隔符,同时保留小数的数量?例如,类似这样的事情: number_format_alternative( '1234.617', ',', '.' ); >1 234,617 但是 我意识到,我可以实现几乎相同的目标,通过使用高得离谱的小数,并从右边修剪所有零,尽管第二个示例看起来像: number_format_alternative( 120.0, ',', '.' ); >120 编辑:这就是我最后要做的

PHP中是否有一种
number\u格式
替代方法,允许我选择千和小数分隔符,同时保留小数的数量?例如,类似这样的事情:

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

>1 234,617
但是

我意识到,我可以实现几乎相同的目标,通过使用高得离谱的小数,并从右边修剪所有零,尽管第二个示例看起来像:

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

编辑:这就是我最后要做的:

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


由于您将数字作为字符串输入到函数中,因此可以使用正则表达式查看小数点后有多少位,在这种情况下用“.”表示,然后执行
number\u format
,并将
$decimals
参数设置为刚计算的数字


一个有效的正则表达式是
\.\d+
,然后从长度中减去1以查找小数,您可以查看我认为性能会更差的情况。可能需要一些测试,我相信还有其他正则表达式可以工作。

我不知道,您必须实现自己的版本。之所以有
$decimals
参数,是因为浮点数不精确。(顺便说一下:您的字符串首先以数字形式转换为浮点,这就是为什么任何关于尾随零的信息都会丢失的原因)在这种方法中,我甚至不需要regexp,我可以使用
strlen(strstr($val,')-1
@leo使用
strlen(strstr($val,'))-1
设置
$decimals
参数的工作方式相同,可能比正则表达式函数运行得稍快,尽管我从未在PHP中测试过
strstr
的速度。
function numberOfDecimals( $number ) {
   return strlen(strstr(rtrim(sprintf('%.10F', $number), '0'), '.'))-1;
}