避免使用BigDecimal的科学记数法

时间:2018-02-01 14:21:58

标签: java bigdecimal

我的情况是输入数据(以字符串形式)可以采用科学计数法,小数点后加0。我正在尝试将此String转换为BigDecimal对象并消除科学记数法并在小数点后丢弃额外的0。我正在使用这个电话:

new BigDecimal(new BigDecimal(s).toPlainString()).stripTrailingZeros()

对于这些输入,

"3438836.84782459"
"10000000000.00000000"
"1"
"93650.99015461"
"272333333.33000000"
"0E-8"
"0E-8"

当我对结果System.out.println对象BigDecimal时,它会输出:

3438836.84782459
1E+10
1
93650.99015461
272333333.33
0
0

有关如何消除科学记数法和额外零点的任何线索?

1 个答案:

答案 0 :(得分:1)

你创造了太多BigDecimals。您创建的第一个字符串被格式化为纯字符串,然后通过仅用作第二个BigDecimal的参数而丢失。然后打印第二个BigDecimal而不转换为纯字符串。您所需要做的就是:

String num = new BigDecimal(s).stripTrailingZeros().toPlainString();