私はJavaの世界で初めて、BigDecimalの使い方を学んでいます。私が今しようとしているのは、分割問題の小数点以下の桁数を制限することです。コードの行は次のとおりです。BigDecimal除算の小数点以下の桁数を制限しようとしていますJava
quotient=one.divide(x);
ここで、1とxはすべてBigDecimal型です。しかし、小数点以下の桁数をどのように制限して印刷するかは分かりません。xは大きい数字で、1は1です。
私はJavaの世界で初めて、BigDecimalの使い方を学んでいます。私が今しようとしているのは、分割問題の小数点以下の桁数を制限することです。コードの行は次のとおりです。BigDecimal除算の小数点以下の桁数を制限しようとしていますJava
quotient=one.divide(x);
ここで、1とxはすべてBigDecimal型です。しかし、小数点以下の桁数をどのように制限して印刷するかは分かりません。xは大きい数字で、1は1です。
ディビジョンが非終了小数点の拡張を持つ場合、そのコードは恐ろしい死に終わります。 (それは非終了小数拡張を持っているので)正確な商は、ArithmeticException
がスローされた表現できない場合
:
divide(BigDecimal divisor)
のJavadocを参照してください。
例:
BigDecimal one = BigDecimal.ONE;
BigDecimal x = BigDecimal.valueOf(7);
one.divide(x); // throws java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
使用divide()
の他のオーバーロードのいずれか、例えばdivide(BigDecimal divisor, int scale, RoundingMode roundingMode)
:
BigDecimal one = BigDecimal.ONE;
BigDecimal x = BigDecimal.valueOf(7);
BigDecimal quotient = one.divide(x, 5, RoundingMode.HALF_UP);
System.out.println(quotient); // prints: 0.14286
BigDecimal one = BigDecimal.ONE;
BigDecimal x = BigDecimal.valueOf(7);
BigDecimal quotient = one.divide(x, 30, RoundingMode.HALF_UP);
System.out.println(quotient); // prints: 0.142857142857142857142857142857
では、次の文を使用することができ、変数のBigDecimalに小数点以下の桁数を設定するには、あなたが
value = value.setScale(2, RoundingMode.CEILING)
は2つの小数
または
value = value.setScale(2, RoundingMode.HALF_UP)
は、共通のラウンドを行うには
「BigDecimal」を必要に応じて出力するには、数値フォーマッタを使用します。 –
これを見てみたいです。http://stackoverflow.com/questions/3395825/how-to-print-formatted-bigdecimal-values – Bobert
'.setScale()'メソッドを試してみてください。注意深くjavadocを読んでください – fge