BigDecimal を使用して小数点以下の数値を抽出する方法は?
BigDecimal d = BigDecimal.valueOf(1548.5649);
結果: 抽出のみ: 5649
BigDecimal を使用して小数点以下の数値を抽出する方法は?
BigDecimal d = BigDecimal.valueOf(1548.5649);
結果: 抽出のみ: 5649
試す:
BigDecimal d = BigDecimal.valueOf(1548.5649);
BigDecimal result = d.subtract(d.setScale(0, RoundingMode.FLOOR)).movePointRight(d.scale());
System.out.println(result);
プリント:
5649
BigDecimal.remainder を試してください:
BigDecimal d = BigDecimal.valueOf(1548.5649);
BigDecimal fraction = d.remainder(BigDecimal.ONE);
System.out.println(fraction);
// Outputs 0.5649
これでうまくいくはずです:
d.subtract(d.setScale(0, RoundingMode.FLOOR));
setScale()
は数値を小数点以下 0 桁に丸め、その名前にもかかわらず、 の値を変更しませんd
。
値が負の場合、 を使用d.subtract(d.setScale(0, RoundingMode.FLOOR))
すると間違った 10 進数が返されます。
これを使用します:
BigInteger decimal =
d.remainder(BigDecimal.ONE).movePointRight(d.scale()).abs().toBigInteger();
または_ 5649
_1548.5649
-1548.5649
結果として、どのタイプが必要かはわかりません。最も簡単な方法は、おそらく BigDecimal を String に変換し、部分文字列を取得することです。
String s = d.toPlainString();
int i = s.indexOf('.');
if (i < 0) {
return "";
}
return s.substring(i + 1);
d.doubleValue()
double値を取得するために使用してみてください