如何始终以完整的十进制格式而不是科学记数法显示BigDecimal对象?

Sao*_*obi 5 java formatting bigdecimal

我有一个BigDecimal物体,myNumber长度未知.例如:12345678.

我一直想把这个数字除以100万,所以我这样做:

myNumber.divide(BigDecimal.valueOf(1000000))
Run Code Online (Sandbox Code Playgroud)

我明白了 12.345678.

我希望将其显示为字符串" 12.345678",而不会切断任何小数位.

所以我这样做

myNumber.divide(BigDecimal.valueOf(1000000)).toString()
Run Code Online (Sandbox Code Playgroud)

这适用于上面的例子.但是,如果myNumber是一个非常小或大的东西,例如:

0.00000001
Run Code Online (Sandbox Code Playgroud)

除以0.00000001一百万并转换为字符串后,它显示为科学记数法,这不是我想要的.我希望它始终以完整的十进制格式显示(在这种情况下0.00000000000001).

有任何想法吗?

Jim*_*son 3

您必须使用divide()包含舍入模式和比例的变体来执行除法,并将比例设置得足够大以包含所有小数位。

int s = myNumber.scale();
BigDecimal result = myNumber.divide(BigDecimal.valueOf(1000000), s+6, RoundingMode.UNNECESSARY);
Run Code Online (Sandbox Code Playgroud)

然后使用toPlainString()格式化。