gpt4 book ai didi

ruby-on-rails - 处理 BigDecimal 尾随零的 Ruby

转载 作者:数据小太阳 更新时间:2023-10-29 07:59:02 25 4
gpt4 key购买 nike

我在我的应用程序中使用 BigDecimal 值,因为要对购物车中的商品进行计算,我读到 BigDecimal 比说整数还是 float ?

我想谈谈一种情况。例如,当我有这个时

amount = BigDecimal.new("28.99")
amount #=> #<BigDecimal:51d3120,'0.2899E2',18(18)>
amount.to_s #=> "28.99"
amount.to_f #=> 28.99

到目前为止这是预期的行为,但是当我执行以下操作时

amount = BigDecimal.new("28.00") || amount = BigDecimal.new("28") 
amount.to_s #=> "28.0"
amount.to_f #=> 28.0

这是有意为之的行为吗?在我的数据库中,我设置了比例和精度

t.decimal :price, precision: 30, scale: 2

当我将值 28.00 保存在数据库中时,我想在我的 View 中显示 28.00 而不是 28.0

更新

刚刚在 SO How to convert a ruby BigDecimal to a 2-decimal place string? 上看到这篇文章解决方案是

v = BigDecimal("28.00")
v.truncate.to_s + '.' + sprintf('%02d', (v.frac * 100).truncate)

我想这是处理它的唯一方法?

最佳答案

sprintf("%2.f", v) 应该可以。 sprintf 的选项可以在

找到

http://ruby-doc.org/core-2.3.0/Kernel.html#method-i-sprintf

此外,如果您使用的是 Rails,number_with_precision 助手可能更易于使用 - 您可以在 http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_with_precision 找到文档

关于ruby-on-rails - 处理 BigDecimal 尾随零的 Ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35173268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com