4

构造BigDecimal函数采用可选的第二个参数,指定对象的精度数字。来自ruby​​ 文档

新的(初始,数字)

有效位数,作为 Fixnum。如果省略或为 0,则根据初始值确定有效位数。

但是,在使用字符串时,此行为与描述不匹配。

BigDecimal.new('1.2345', 4).to_s('F')
# 1.2345
BigDecimal.new('1.2345', 1).to_s('F')
# 1.2345

使用 String 参数时如何使用 BigDecimal 指定精度?

4

2 回答 2

3

BigDecimal 不采用字符串值的精度参数。

正确的做法:

BigDecimal.new("1020.567").round(2) => 1020.57

错误的方法:

BigDecimal.new(1020.567, 2) => 1000.0
于 2014-11-19T11:38:41.427 回答
0

A simple workaround would be BigDecimal.new('1.2345'.to_f, 1)

于 2013-05-19T16:54:43.663 回答