$numval = 12345.50;
期望的输出:
12 345,50
逗号而不是点不是问题,但我怎样才能让千位分隔符成为空格?
我注意到带有空格的 PHP 货币格式,但这不是重复的帖子。使用number_format
是毫无疑问的,因为它会四舍五入输入值。我不能让通过它的值被四舍五入。
是否有一种内置方法可以准确地执行该number_format()
操作,但无需四舍五入,还是我必须编写自己的函数来执行此操作?
$numval = 12345.50;
期望的输出:
12 345,50
逗号而不是点不是问题,但我怎样才能让千位分隔符成为空格?
我注意到带有空格的 PHP 货币格式,但这不是重复的帖子。使用number_format
是毫无疑问的,因为它会四舍五入输入值。我不能让通过它的值被四舍五入。
是否有一种内置方法可以准确地执行该number_format()
操作,但无需四舍五入,还是我必须编写自己的函数来执行此操作?
如果舍入是不可能的,那么浮点值也是如此。如果您不想舍入,则必须返回整数,因为浮点运算不精确。在这种情况下,您必须自己实现格式化功能。
如果您正在处理金钱,则尤其如此。例如,为什么不使用 Double 或 Float 来表示货币?
从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);
}
这看起来像您要使用的函数的版本:
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