BigDecimal到字符串转换在小数点前添加零

时间:2016-01-18 02:45:16

标签: java string bigdecimal

在我的代码中,如果我转换字符串,例如

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

3 个答案:

答案 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\\.", ".");