如何使用 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 d = BigDecimal.valueOf(1548.5649);
BigDecimal fraction = d.remainder(BigDecimal.ONE);
System.out.println(fraction);
// Outputs 0.5649
如果该值为负数,则 usingd.subtract(d.setScale(0, RoundingMode.FLOOR))
将返回错误的小数。
使用这个:
BigInteger decimal =
d.remainder(BigDecimal.ONE).movePointRight(d.scale()).abs().toBigInteger();
它返回5649
或1548.5649
-1548.5649
结果,您不知道您想要哪种类型。最简单的方法可能是将 BigDecimal 转换为字符串,并取一个子字符串:
String s = d.toPlainString();
int i = s.indexOf('.');
if (i < 0) {
return "";
}
return s.substring(i + 1);
尝试使用d.doubleValue()
来获得双倍值