$numval = 12345.50;
期望的输出:
12 345,50
逗号而不是点不是问题,但如何让千位分隔符成为空格?
我注意到PHP money format with spaces,但这不是一个重复的帖子。使用number_format
是不可能的,因为它会对输入值进行舍入。我不能允许通过它的值被舍入。
是否有一种内置的方法来完成number_format()
所做的事情,但是没有舍入值或者我是否必须编写自己的函数来执行此操作?
答案 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);
}