2

Javaクラスを含むRubyの正しいスクリプト

require 'java'
include_class 'java.math.BigDecimal'
include_class 'java.math.RoundingMode'

スクリプト中に、2 つの java.bigDecimal を除算する必要があります

 one = BigDecimal.new("1")
 number1 = BigDecimal.new("3")
 number1 = one.divide(number1,RoundingMode.new(HALF_EVEN))

この IDE にはインテリセンスがないため、構文が正しいかどうかわかりません。実行時エラーは次のとおりです。

初期化されていない定数::HALF_EVEN

  1. ruby スクリプト内の Java オブジェクトを正しい方法で結合する必要がありますか?
  2. ruby envで2つのjava.bigDecimalオブジェクトを分割するにはどうすればよいですか?
4

2 に答える 2

1

試す

number1 = one.divide(number1, RoundingMode::Half_EVEN)
于 2010-05-02T22:38:43.993 に答える
0

RoundingMode.HALF_EVENそれはJavaにあったでしょう。それ RoundingMode::HALF_EVENはルビーにあります。int定数のオーバーロード (つまりBigDecimal::ROUND_HALF_EVEN)を使用することもできますが、オーバーロードを使用することをおenum勧めします。

オーバーロードを使用して、商のスケールを制御できますdivide(BigDecimal divisor, int scale, RoundingMode mode)

Java スニペットを次に示します。

    BigDecimal one = BigDecimal.ONE;
    BigDecimal three = BigDecimal.valueOf(3);

    System.out.println(one.divide(three, 10, RoundingMode.DOWN));
    // prints "0.3333333333"

    System.out.println(one.divide(three, 10, RoundingMode.UP));
    // prints "0.3333333334"

    System.out.println(one.divide(three, 333, RoundingMode.UNNECESSARY));
    // throws java.lang.ArithmeticException: Rounding necessary

関連する質問

API リンク

  • java.math.RoundingMode
  • java.math.BigDecimal

    ABigDecimalは、スケーリングされていない任意精度の整数値と 32 ビット整数のscaleで構成されます。ゼロまたは正の場合、位取りは小数点以下の桁数です。負の場合、数値のスケーリングされていない値は、10 のスケールの負の累乗で乗算されます。

于 2010-05-02T22:34:51.300 に答える