我正在尝试将输入流转换为对象,并且在将以下字符串转换为BigDecimal时遇到麻烦。我得到87.00,因为0被忽略了。我正在尝试使用DecimalFormat。任何帮助表示赞赏。谢谢!
例如0087必须转换为00.87
答案 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” 是一个单独的问题,但是可以实现,如果确实需要的话。