为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

犯罪嫌疑人X 2022-07-14 17:36:42
我正在尝试将输入流转换为对象,并且无法将以下字符串转换为 BigDecimal。我得到 87.00,因为 0 被忽略了。我正在尝试使用 DecimalFormat。任何帮助表示赞赏。谢谢!例如 0087 必须转换为 00.87
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

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

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

这里的关键是要了解BigDecimals 具有两个特征:任意长度的十进制数字序列,以及以小数点右侧的位数的形式传达最低有效数字位值的比例观点。上面演示的特定工厂方法接受这些作为单独的参数,尽管它仅在数字字符串足够短以表示为时才有效long2直接对应于输入中的(隐式)小数位数。

将结果输出BigDecimal为“00.87”而不是“0.87”是一个单独的问题,但如果它真的是你想要的东西是可行的。


查看完整回答
反对 回复 2022-07-14
?
小怪兽爱吃肉

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);


查看完整回答
反对 回复 2022-07-14
  • 2 回答
  • 0 关注
  • 238 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信