在我的代码中,如果我转换字符串,例如
String str = ".12";
String str2 = "0.12"
到Bigdecimal,两者都给我输出0.12。我的输出要求我不要更改符号 - 有没有一种方法可以从字符串中进行BigDecimal转换,在这种情况下不会为.12添加0?当它保持0.12到0.12时,我没事。
我只是想让Bigdecimal完全保留字符串输入,不添加零,不删除零。
我这样做:
Bigdecimal bd = new Bigdecimal(str);
bd.toString() gives me 0.12
答案 0 :(得分:1)
正如您可以阅读here那样,点会从FractionPart中删除IntegerPart。所以在你的情况下,0被添加为IntegerPart,因为你只传递一个fractionPart
答案 1 :(得分:0)
希望这有帮助:)
如果可以,你可以为BigDecimal创建一个子类,比如说:
class CustomBigDecimal extends BigDecimal{
String originalValue;
public CustomBigDecimal(String str) {
super(str);
originalValue=str;
}
public String toString(){
return originalValue;
}
}
然后像这样使用它:
CustomBigDecimal cbd1 = new CustomBigDecimal("0.12");
System.out.println(cbd1);
CustomBigDecimal cbd2 = new CustomBigDecimal(".12");
System.out.println(cbd2);
输出:
0.12
.12
答案 2 :(得分:-2)
一种方法是格式化从toString()
返回的字符串并手动删除前导零:
bd.toString().replaceFirst("^0\\.", ".");