number_format和负数的问题

时间:2011-06-21 17:32:50

标签: php number-formatting

现在我在我的数据库中将数字存储为double(11,3)。一些数字可能是更大的负数。我现在正在玩的那个是-3000.000

当我在3000.000上使用number_format时,它返回3,000 当我在-3000.000上使用number_format时它返回-3

任何想法为什么会发生这种情况以及我可以采取哪些措施来解决这个问题?我现在有点不知道为什么会发生这种情况。

谢谢,

杰夫

编辑:我让它使用以下代码:

$number = abs($row['Amount']) * -1; $final = number_format($number,2);

现在为什么会起作用而不是:

$final = number_format($row['Amount'],2); 

我没有任何线索,但至少我找到了解决方案,感谢您的帮助:)

4 个答案:

答案 0 :(得分:2)

试试这个:

if($input<0){
  $number = abs($input);
  $result = number_format($number) * -1;
}else {
  $result = number_format($input);
}

答案 1 :(得分:2)

number_format(-3000.000, 2)的结果是字符串"-3,000.00"

如果您没有这样做,请使用可以重现问题的代码更新问题。

答案 2 :(得分:1)

首先确保您的号码从数据库中提取为-3000。否则以前的答案和评论都很好。

答案 3 :(得分:0)

基于Shameer的建议,我来到了这个解决方案。

将返回负值上的尾随零(可能与预期一样):

if($input < 0){
    return number_format(0-abs($input), 2, ',', '');
}
else {
    return number_format((float)$input, 2, ',', '');
}