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
).
有任何想法吗?
您必须使用divide()
包含舍入模式和比例的变体来执行除法,并将比例设置得足够大以包含所有小数位。
int s = myNumber.scale();
BigDecimal result = myNumber.divide(BigDecimal.valueOf(1000000), s+6, RoundingMode.UNNECESSARY);
Run Code Online (Sandbox Code Playgroud)
然后使用toPlainString()
格式化。