Я работаю над отчетами для веб-сайта, и сейчас я думаю о том, каким будет лучший способ обработки BigDecimal -0.0.BigDecimal to Currency с -0.0
В базе данных, с которой я работаю, их много. Когда эти -0.0 отправляются через number_to_currency()
, я получаю «$ -0.00». Мой формат для отрицательных чисел на самом деле «- $ x.xx», поэтому обратите внимание, что number_to_currency не форматирует его как отрицательное число (иначе также будет отрицательный знак перед значком доллара), но по какой-то причине отрицательный знак переводится вместе с 0.
Сейчас мое решение, чтобы сделать это каждый раз, когда я получаю сумму из базы данных:
amount *= -1 if amount == 0 && amount.sign == -1
Это изменяет -0.0 до 0.0. Это достаточно просто, но я не могу не задаться вопросом, есть ли лучшее решение, или что-то в BigDecimals или number_to_currency, чтобы справиться с этой ситуацией, которую я просто не нахожу.
Что расчет вы делаете, чтобы сохранить $ -0,0 в вашей базе данных? Когда я делаю '(BigDecimal.new (« 50.00 ») + BigDecimal.new (« - 50.00 »)). Zero?' Я получаю 'true' – Anthony
@ Энтони - Я не знаю, как -0.0 хранится в база данных. Я работаю с базой данных, которую я не создавал, купите мой следующий шаг, чтобы исследовать это. Если я смогу избежать его хранения, это сэкономит мне много работы. В противном случае Сайед дал мне довольно тщательный ответ и лучший способ написать мое решение. – Isaac
Если у вас есть какие-либо слова, я бы поговорил с командой, напишу переход, чтобы преобразовать все -0.0 в 0.0 в базу данных, а затем не придется беспокоиться о какой-либо из этих логик представления. Очевидно, что это требует, чтобы вы правильно сохранили его в db, продвигаясь вперед. – Anthony