проблемы с числовым форматом и отрицательными числами - PullRequest
2 голосов
/ 21 июня 2011

Прямо сейчас я храню числа как двойные (11,3) в моей базе данных.Некоторые из чисел могут быть большими негативами.Сейчас я играю с -3000.000

Когда я использую number_format только на 3000.000, он возвращает 3000. Когда я использую number_format на -3000.000, он возвращает -3

Любые идеи, почему это такчто происходит и что я могу сделать, чтобы это исправить?Я сейчас в растерянности относительно того, почему это происходит.

Спасибо,

Джефф

РЕДАКТИРОВАТЬ: Я получил этоработать со следующим кодом:

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

Теперь, почему это будет работать, а не:

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

У меня нет подсказки, но, по крайней мере, я нашел решение, спасибо запомощь:)

Ответы [ 4 ]

3 голосов
/ 21 июня 2011

попробуйте это:

if($input<0){
  $number = abs($input);
  $result = number_format($number) * -1;
}else {
  $result = number_format($input);
}
2 голосов
/ 21 июня 2011

Результатом number_format(-3000.000, 2) является строка , "-3,000.00".

Если вы этого не получите, обновите вопрос кодом, воспроизводящим вашу проблему.

1 голос
/ 21 июня 2011

Сначала убедитесь, что ваш номер извлечен из базы данных как -3000. В противном случае предыдущие ответы и комментарии хороши.

0 голосов
/ 05 марта 2014

основываясь на предложении Шамера, я пришел к этому решению.

будут возвращены конечные нули на отрицательных значениях (вероятно, как и ожидалось):

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