有没有办法强制Rails以一定的精度输出所有十进制数?我的数据库中的所有十进制字段都是货币金额,所以我希望默认显示十进制数字,精度为2(即2.40)。我知道我可以使用像“number_to_currency”这样的辅助函数对每个单独的数字执行此操作,但这似乎有点乏味且不必要。
答案 0 :(得分:2)
如果您担心在Float上覆盖“to_s”可能出现无法预料的副作用,那么您的下一个最佳选择可能只是创建一种新方法,但仍然是核心扩展。像这样:
class Float
def c
sprintf('%.2f', self)
end
end
然后不能产生任何不可预见的后果,然后你想要显示两位小数的数字,你只需要调用.c
。例如:
message = "The account balance is $#{amount.c}."
不是自动的,但没有多少额外的输入,也没有可能导致to_s可能导致的副作用。
答案 1 :(得分:0)
如果你不介意猴子修补红宝石,你可以添加这样的东西(把它放在“/config/initializers/core_extensions.rb”的初始化器中):
class Float
def to_s
sprintf('%.2f', self)
end
end