なぜJava BigDecimalを返し1E+1?
-
06-09-2019 - |
質問
なぜこのコードが返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
所属していません StackOverflow