• 締切済み

JDK1.5のjava.math.BigDecimal#toString

JDK1.5のjava.math.BigDecimal#toStringについて教えて下さい。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/math/BigDecimal.html#toString() SunにDocumentがありますが、この説明にある「調整された指数」の算出の仕方がよくわからないので、どういうときに指数表示されるのかが分かりません。 例を示してわかりやすく説明していただけるとありがたいです。

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

-scale+(ulength-1) この計算式そのままではないでしょうか? >調整された指数 この式のそれぞれの変数の意味がわからないということであれば、 scale はそのまま BigDecimal のインスタンスメソッドですし、 ulengthは桁数ですよね。 こんなんで試してみました import java.math.BigDecimal; import java.math.BigInteger; class Rec { String val; int scale; Rec(String val, int scale) { this.val = val; this.scale = scale; } String to_s() { BigDecimal v = new BigDecimal( new BigInteger(this.val), this.scale); return "'" + this.val + "'" + " scale =" + this.scale + " ulength =" + this.val.length() + " -scale+(ulength-1) = " + (-v.scale() + this.val.length() - 1) + ", value= " + v.toString(); } } class Demo { static Rec testData[] = { new Rec("123", 0), //new Rec("-123", 0), new Rec("123", -1), new Rec("123", -3), new Rec("123", 1), new Rec("123", 5), new Rec("123", 10), new Rec("123", 12) }; public static void main(String[] args) { for (Rec i: testData) { System.out.println(i.to_s()); } } } 面倒くさかったので負の数は対応していません :) 実行結果は以下の通り '123' scale =0 ulength =3 -scale+(ulength-1) = 2, value= 123 '123' scale =-1 ulength =3 -scale+(ulength-1) = 3, value= 1.23E+3 '123' scale =-3 ulength =3 -scale+(ulength-1) = 5, value= 1.23E+5 '123' scale =1 ulength =3 -scale+(ulength-1) = 1, value= 12.3 '123' scale =5 ulength =3 -scale+(ulength-1) = -3, value= 0.00123 '123' scale =10 ulength =3 -scale+(ulength-1) = -8, value= 1.23E-8 '123' scale =12 ulength =3 -scale+(ulength-1) = -10, value= 1.23E-10

関連するQ&A