2016-09-29 4 views
0

JavaでBigDecimalとして500を処理しました。 そして私は{・UnscaledValue = 5 ・Scale = -2 ・Precision = 0} なぜ正確さが0であるのか分かりません。 私はそれが1かもしれないと思いました。 誰も説明できますか?Javaで大きな小数点精度ゼロが意味するもの

+4

コードplzを表示します。 – passion

+0

知っておく必要がある理由があるのですか、それとも好奇心が強いのですか(私もそうでしょう)? –

+1

コードなしで、あなたが求めているものが不明なので、この質問を閉じるために投票しています。これは良い質問かもしれませんが、コードが必要です。 –

答えて

2

最も簡単な方法で構築さ500のための精度は、3

scala> new java.math.BigDecimal("500").precision() 
res0: Int = 3 

あなたが別の何かをした場合は、コードを表示する必要がありますが、私たちはあなたが何をしたか知っています。 the documentationから

precision

の意味:

精度は、スケーリングされていない値の桁数です。ゼロ値の精度は1です。

+0

スケールが-2でunscaledValueが5の場合、明らかに5 * 10^2として格納されます。それで精度は0でなく1でなければなりません。 –

+0

私も3を得ました。私は 'new BigDecimal(500.0)'も試しましたが、プレシジョンはまだ3でスケール0です。 OPは0の精度を得る可能性があります。 –

+0

@ OleV.V .:浮動小数点型(double)からBigDecimalをインスタンス化しないでください。しかし、あなたが 'x = new BigDecimal(" 5e2 ")'や 'x = new BigDecimal(" 5 ")。movePointRight(2);'のようなものや単純なカルキュレーションから ' 「5」の「unscaledValue」および「-2」の「scale」を含む。だから唯一の問題は、なぜ精度が「0」なのかです。定義上、 '1 'でなければなりません。 –

関連する問題