我正在尝试将输入流转换为对象,并且无法将以下字符串转换为 BigDecimal。我得到 87.00,因为 0 被忽略了。我正在尝试使用 DecimalFormat。任何帮助表示赞赏。谢谢!例如 0087 必须转换为 00.87
2 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
您似乎在注释中指出初始字符串"0087"
是具有两位小数的定点表示,因此在最后两位数之前有一个隐含的小数点。有几种方法可以将其转换为相应的BigDecimal
,但我自己,我会这样做:
BigDecimal result = BigDecimal.valueOf(Long.parseLong("0087"), 2);
这里的关键是要了解BigDecimal
s 具有两个特征:任意长度的十进制数字序列,以及以小数点右侧的位数的形式传达最低有效数字位值的比例观点。上面演示的特定工厂方法接受这些作为单独的参数,尽管它仅在数字字符串足够短以表示为时才有效long
。2
直接对应于输入中的(隐式)小数位数。
将结果输出BigDecimal
为“00.87”而不是“0.87”是一个单独的问题,但如果它真的是你想要的东西是可行的。
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
试试这个代码
String str="0087";
int pos=str.lastIndexOf("0");
String resultat=str.substring(0,pos+1);
resultat+=".";
resultat+=str.substring(pos+1);
System.out.println(resultat);
new BigDecimal(resultat);
添加回答
举报
0/150
提交
取消