Как получить переменную, имеющую 2 знака после запятой - PullRequest
2 голосов
/ 19 июля 2010

У меня есть переменная, которую я хотел бы заставить иметь 2 и всегда 2 десятичных знака. Я сравниваю с валютой. Часто я получаю сравнение, похожее на следующее.

if self.price != price
  #do something
end

Где self.price = 120.00 и price = 120.0. self.price установлен с :precision => 2 в модели, но как мне сделать то же самое с переменной, потому что это кажется неудачным в сравнении

Ответы [ 2 ]

3 голосов
/ 19 июля 2010

Используйте целые числа для хранения валюты, например, используйте магазин 100 центов за 1 доллар. Это уменьшает головную боль и может улучшить производительность, если это имеет значение.

1 голос
/ 19 июля 2010
class Numeric
def round_to( decimals=0 )
  factor = 10.0**decimals
  (self*factor).round / factor
  end
end


if self.price.round_to(2) != price.round_to(2)
  #do something
end
...