设置rails中所有十进制数的默认精度

时间:2011-01-19 18:21:58

标签: ruby-on-rails

有没有办法强制Rails以一定的精度输出所有十进制数?我的数据库中的所有十进制字段都是货币金额,所以我希望默认显示十进制数字,精度为2(即2.40)。我知道我可以使用像“number_to_currency”这样的辅助函数对每个单独的数字执行此操作,但这似乎有点乏味且不必要。

2 个答案:

答案 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