如何使用BigDecimal提取小数点后的数字?
BigDecimal d = BigDecimal.valueOf(1548.5649);
结果:仅提取:5649
答案 0 :(得分:10)
尝试:
BigDecimal d = BigDecimal.valueOf(1548.5649);
BigDecimal result = d.subtract(d.setScale(0, RoundingMode.FLOOR)).movePointRight(d.scale());
System.out.println(result);
打印:
5649
答案 1 :(得分:6)
BigDecimal d = BigDecimal.valueOf(1548.5649);
BigDecimal fraction = d.remainder(BigDecimal.ONE);
System.out.println(fraction);
// Outputs 0.5649
答案 2 :(得分:4)
答案 3 :(得分:1)
如果值为负数,则使用d.subtract(d.setScale(0, RoundingMode.FLOOR))
将返回错误的小数。
使用此:
BigInteger decimal =
d.remainder(BigDecimal.ONE).movePointRight(d.scale()).abs().toBigInteger();
返回5649
或1548.5649
-1548.5649
答案 4 :(得分:0)
您不会告诉您想要哪种类型的结果。最简单的方法可能是将BigDecimal转换为String,并采用子字符串:
String s = d.toPlainString();
int i = s.indexOf('.');
if (i < 0) {
return "";
}
return s.substring(i + 1);
答案 5 :(得分:-2)
尝试使用d.doubleValue()
获取双倍值