1

$numval = 12345.50;

期望的输出:

12 345,50

逗号而不是点不是问题,但我怎样才能让千位分隔符成为空格?

我注意到带有空格的 PHP 货币格式,但这不是重复的帖子。使用number_format是毫无疑问的,因为它会四舍五入输入值。我不能让通过它的值被四舍五入。

是否有一种内置方法可以准确地执行该number_format()操作,但无需四舍五入,还是我必须编写自己的函数来执行此操作?

4

3 回答 3

3

如果舍入是不可能的,那么浮点值也是如此。如果您不想舍入,则必须返回整数,因为浮点运算不精确。在这种情况下,您必须自己实现格式化功能。

如果您正在处理金钱,则尤其如此。例如,为什么不使用 Double 或 Float 来表示货币?

于 2012-05-30T18:28:22.607 回答
2

number_format () 页面的这个评论中(我修改了函数以匹配 number_format 默认值)。

为防止舍入:

function fnumber_format($number, $decimals=0, $dec_point='.', $thousands_sep=',') {
        if (($number * pow(10 , $decimals + 1) % 10 ) == 5)  //if next not significant digit is 5
            $number -= pow(10 , -($decimals+1));

        return number_format($number, $decimals, $dec_point, $thousands_sep);
}
于 2012-05-30T18:33:04.350 回答
2

这看起来像您要使用的函数的版本:

string number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' )

例如:

$newNumber = number_format($oldNumber, 2, ",", " ");

有关更多信息,请查看http://php.net/manual/en/function.number-format.php

于 2012-05-30T18:27:22.567 回答