Php 数字格式和负数的问题

Php 数字格式和负数的问题,php,number-formatting,Php,Number Formatting,现在我正在数据库中以双精度(11,3)存储数字。有些数字可能是更大的负数。我现在玩的是-3000.000 当我在3000.000上使用number_格式时,它返回3000 当我在-3000.000上使用number_格式时,它返回-3 知道为什么会发生这种情况吗?我能做些什么来解决它?我现在有点不知所措,不知道为什么会这样 谢谢 杰夫 编辑:我让它使用以下代码: $number = abs($row['Amount']) * -1; $final = number_format($number,

现在我正在数据库中以双精度(11,3)存储数字。有些数字可能是更大的负数。我现在玩的是-3000.000

当我在3000.000上使用number_格式时,它返回3000 当我在-3000.000上使用number_格式时,它返回-3

知道为什么会发生这种情况吗?我能做些什么来解决它?我现在有点不知所措,不知道为什么会这样

谢谢

杰夫

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

$number = abs($row['Amount']) * -1; $final = number_format($number,2);
现在,为什么这会起作用而不是:

$final = number_format($row['Amount'],2); 
我没有任何线索,但至少我找到了解决方案,谢谢你的帮助:)

试试这个:

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

如果($input首先确保您的号码从数据库中提取为-3000。否则之前的答案和评论都是好的。

数字格式(-3000.000,2)
的结果是字符串
“-3000.00”


如果你不明白,请用重现你问题的代码更新问题。

根据Shamer的建议,我得出了这个解决方案

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

if($input<0){
返回编号_格式(0-abs($input),2',','';
}
否则{
返回编号_格式((浮点)$input,2,',','';
}

This
php-R'echo number_format(-3000.000);”
返回
-3000
。你能确认数据库发送了正确的信息吗?哪个数据库管理系统?一些php版本中有关于某些数据库的错误-php没有正确检索一些数值。只是这样做了:echo number_format(3000.000,2)*-1;得到-3…我不明白这里出了什么问题。是的,这就是我来这里的原因。我有点让Shumer的版本工作,仍然有一个bug需要解决。即使这样,我仍然得到3:echo number_格式(3000.000,2)*-1;我不明白发生了什么…请参见@salate。您正在获取一个字符串并将其乘以-1。
“3000”
中的逗号将导致数学运算为
3*-1
。建议的代码将不起作用,因为
“3000.00”*-1
会导致字符串被篡改(到
3
)在乘法运算之前。是的,我想出来了,但我选择了他/她的答案作为正确答案b/c它确实引导我找到了答案:)所以你把一个错误的答案标记为正确。。。我认为更准确的选择是写下你自己的正确答案,并将其标记为正确。这将存在于互联网上,并可能在未来几年误导许多人。
if($input < 0){
    return number_format(0-abs($input), 2, ',', '');
}
else {
    return number_format((float)$input, 2, ',', '');
}