用领先的零将字符串转换为bigdecimal



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

例如。0087必须转换为00.87

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

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

这里的关键是要了解BigDecimal s具有两个特征属性:十进制数字的任意长度序列,以及 scale 传达最不重要的数字的位置值,形式小数点右侧的数字数量。上面演示的特定工厂方法接受这些方法是单独的参数,尽管仅当数字字符串足够短以表示为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);

最新更新