有money_format的数千个分隔符?

时间:2012-05-30 18:24:14

标签: php number-formatting

$numval = 12345.50;

期望的输出:

12 345,50

逗号而不是点不是问题,但如何让千位分隔符成为空格?

我注意到PHP money format with spaces,但这不是一个重复的帖子。使用number_format是不可能的,因为它会对输入值进行舍入。我不能允许通过它的值被舍入。

是否有一种内置的方法来完成number_format()所做的事情,但是没有舍入值或者我是否必须编写自己的函数来执行此操作?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

如果你正在处理钱,这尤其是真的。请参阅示例Why not use Double or Float to represent currency?

答案 2 :(得分:2)

来自this comment()页面的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);
}