我在BigDecimal类的文档中看到了以下代码:
类似:
(::new(“1.2”) - BigDecimal(“1.0”)) == BigDecimal(“0.2”) -> true (1.2 - 1.0) == 0.2 -> false
所以我想知道是否有必要使用这样的new
方法:BigDecimal.new 2.5, 2
。还是仅仅使用BigDecimal 2.5, 2
只是一种糟糕的做法?当评估相同的BigDecimal值时,它们都会得到新的引用:
BigDecimal 2.5, 2
#=> #<BigDecimal:7ffa93e524b0,'0.25E1',18(36)>
BigDecimal 2.5, 2
#=> #<BigDecimal:7ffa97236600,'0.25E1',18(36)>
在最新的内核文档中,我们可以看到BigDecimal方法如下所示:
static VALUE
BigDecimal_global_new(int argc, VALUE *argv, VALUE self)
{
return BigDecimal_new(argc, argv, rb_cBigDecimal);
}
换句话说,BigDecimal.new
将通过提供的参数进行调用。所以,是的,并没有严格的必要明确使用它。