BigDecimalとintの違いは?

私は 1.4350 1.4300 という2つの数字を持っています。私がそれらを減算すると、 0.0050 を返すのではなく、 50 を探しています。また、 90.25 90.10 15 を返す必要があります。

0
数学的には、90.2500000 = 90.25以来、これは意味をなさない。それらは実際の小数ですか、または小数点で結合された2つの異なる数字ですか?
追加された 著者 James,
90.250 - 90.10を引いた場合はありますか?
追加された 著者 user802421,
数学的にはそうですが、BigDecimalではそうではありません。
追加された 著者 user802421,

1 答え

BigDecimal.unscaledValue() をクリックします。これは、BigIntegerとして必要なものを返します。

// Two example numbers:
BigDecimal val0 = new BigDecimal("1.4350");
BigDecimal val1 = new BigDecimal("1.4300");


// This might be a method:

if (val0.scale() != val1.scale())
    throws new IllegalArgumentException("Scales are not the same!");

BigDecimal subtr = val0.subtract(val1);
System.out.println(subtr);//Prints 0.0050

BigInteger unscaled = subtr.unscaledValue();
System.out.println(unscaled);//Prints 50
2
追加された
+1:スケールが同じであることを確認する必要があります。
追加された 著者 Peter Lawrey,