Java,只提取大十进制的小数部分?

2022-08-31 14:54:28

在Java中,我正在使用类,我的部分代码要求我从中提取分数部分。 似乎没有任何内置的方法来帮助我获得小数点后的数字。BigDecimalBigDecimalBigDecimal

例如:

BigDecimal bd = new BigDecimal("23452.4523434");

我想从上面表示的数字中提取。最好的方法是什么?4523434


答案 1

我会尝试.bd.remainder(BigDecimal.ONE)

使用余数方法和 ONE 常量。

BigDecimal bd = new BigDecimal( "23452.4523434" );
BigDecimal fractionalPart = bd.remainder( BigDecimal.ONE ); // Result:  0.4523434

答案 2

如果值为负数,则 using 将返回错误的小数。bd.subtract()

使用这个

BigInteger decimal = bd.remainder(BigDecimal.ONE).movePointRight(bd.scale()).abs().toBigInteger();

它返回或452343423452.4523434-23452.4523434


此外,如果您不希望小数部分的右侧出现额外的零,请使用:

bd = bd.stripTrailingZeros();

在上一个代码之前。


推荐