使用前导零将字符串转换为BigDecimal

时间:2019-03-01 14:26:17

标签: java

我正在尝试将输入流转换为对象,并且在将以下字符串转换为BigDecimal时遇到麻烦。我得到87.00,因为0被忽略了。我正在尝试使用DecimalFormat。任何帮助表示赞赏。谢谢!

例如0087必须转换为00.87

2 个答案:

答案 0 :(得分:0)

尝试此代码

@babel/preset-env

答案 1 :(得分:0)

您似乎在注释中指出初始字符串"0087"是一个定点表示形式,具有两个小数位,因此在最后两位数字之前有一个隐式小数点。您可以通过多种方式将其转换为相应的BigDecimal,但我本人会这样:

BigDecimal result = BigDecimal.valueOf(Long.parseLong("0087"), 2);

这里的关键是要了解BigDecimal具有两个特征:一个任意长度的十进制数字序列,以及一个 scale 来传达最低有效数字的位置值,以小数点右边的位数表示。上面展示的特定工厂方法将那些作为单独的参数接受,尽管它仅在数字字符串足够短以可以表示为long的情况下才有效。 2直接对应于您输入中的(隐式)小数位数。

将结果BigDecimal输出为“ 00.87”而不是“ 0.87” 是一个单独的问题,但是可以实现,如果确实需要的话。