BigDecimal
构造函数使用可选的第二个参数,它指定对象的精确数字。来自ruby-doc:
新(初始,数字)
有效位数,作为Fixnum。如果 省略或0,有效位数由 初始值。
但是,使用String时,此行为与描述不符。
BigDecimal.new('1.2345', 4).to_s('F')
# 1.2345
BigDecimal.new('1.2345', 1).to_s('F')
# 1.2345
使用String参数时如何使用BigDecimal指定精度?
答案 0 :(得分:3)
BigDecimal不接受带字符串值的精度参数。
正确方法:
BigDecimal.new("1020.567").round(2) => 1020.57
错误的方法:
BigDecimal.new(1020.567, 2) => 1000.0
答案 1 :(得分:0)
一个简单的解决方法是BigDecimal.new('1.2345'.to_f, 1)