質問

なぜこのコードが返1E+1ながら他の入力例17)、出力トなどで一般的に用いられてい科学的表記?

BigDecimal bigDecimal = BigDecimal.valueOf(doubleValue).multiply(BigDecimal.valueOf(100d)).stripTrailingZeros();
System.out.println("value: " + bigDecimal);
役に立ちましたか?

解決

bigDecimal.toPlainStringを使用()

 BigDecimal bigDecimal = BigDecimal.valueOf(100000.0)
                     .multiply(BigDecimal.valueOf(100d))
                     .stripTrailingZeros();
 System.out.println("plain      : " + bigDecimal.toPlainString());
 System.out.println("scientific : " + bigDecimal.toEngineeringString());

出力:

plain      : 10000000
scientific : 10E+6

他のヒント

それはあなたが.toString()に結果を渡す際に起こっている暗黙のSystem.out.println()変換です。

を正確に理由を挙動 BigDecimal.toString() 分かりやすく説明している APIのdocフレーバ 大(および近く理解)。

く一致し(とロケール感度)テキスト表現を使用してみてください は、decimalformat.

あなたは十分な有効桁数を持っていないので、

これは基本的です。あなただけの100で1桁を持っている何かを掛ける場合は、あなただけの1桁で何かを得ます。それは「10」を示した場合、それは基本的には2桁を持っていることを言います。それが唯一の1桁を持って表示する方法は、「^ 1 1×10」を表示することです。

次の二つの小数が同じ値(10)が、異なる「スケール」を有する(それらは有効数字のカウントを開始、トップ2本のSIGのイチジクを有し、底部が有する1):

System.out.println(new BigDecimal(BigInteger.TEN, 0));  // prints 10
System.out.println(new BigDecimal(BigInteger.ONE, -1)); // prints 1E+1
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top