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

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

例如 0087 必须转换为 00.87


犯罪嫌疑人X
浏览 239回答 2
2回答

鸿蒙传说

您似乎在注释中指出初始字符串"0087"是具有两位小数的定点表示,因此在最后两位数之前有一个隐含的小数点。有几种方法可以将其转换为相应的BigDecimal,但我自己,我会这样做:BigDecimal result = BigDecimal.valueOf(Long.parseLong("0087"), 2);这里的关键是要了解BigDecimals 具有两个特征:任意长度的十进制数字序列,以及以小数点右侧的位数的形式传达最低有效数字位值的比例观点。上面演示的特定工厂方法接受这些作为单独的参数,尽管它仅在数字字符串足够短以表示为时才有效long。2直接对应于输入中的(隐式)小数位数。将结果输出BigDecimal为“00.87”而不是“0.87”是一个单独的问题,但如果它真的是你想要的东西是可行的。

小怪兽爱吃肉

试试这个代码 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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java