修改小数点和千位分隔符而不改变小数位数

gen*_*pos 3 php number-formatting

我是 php 新手,我正在尝试使用 number_format :

number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )
Run Code Online (Sandbox Code Playgroud)

如标题所示,我的目标是修改小数点和千位分隔符而不更改小数位数,如下所示:

$Num=123456.789;
$Num2=number_format ($Num, [decimals as in $Num], ",", "'" );
Run Code Online (Sandbox Code Playgroud)

我的结果应该是:

$Num2="123'456,789";
Run Code Online (Sandbox Code Playgroud)

编辑

我需要未知小数位数的代码

Gor*_*don 5

您可以使用NumberFormatter

您仍然需要指定一定数量的小数位数,但您可以使用足够高的值就可以了。这并不是说数字的数量真的是任意的。它与您的精度 ini 设置有关。

$formatter = new NumberFormatter("en_US", NumberFormatter::DECIMAL);
$formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 42);
$formatter->setSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL, "'");
$formatter->setSymbol(NumberFormatter::DECIMAL_SEPARATOR_SYMBOL, ",");
echo $formatter->format(123456.7891234); // 123'456,7891234
Run Code Online (Sandbox Code Playgroud)

演示 https://3v4l.org/TCAIA