0

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)>
4

1 に答える 1

1

最新のカーネル ドキュメントでは、BigDecimal メソッドが次のようになっていることがわかります。

static VALUE
BigDecimal_global_new(int argc, VALUE *argv, VALUE self)
{
    return BigDecimal_new(argc, argv, rb_cBigDecimal);
}

つまり、BigDecimal.new指定された引数に対して呼び出されます。したがって、はい、厳密に明示的に使用する必要はありません。

于 2012-09-03T14:49:26.750 に答える