BigDecimal 到字符串转换在小数点前加一个零
BigDecimal to string conversion adds a zero before decimal point
在我的代码中,如果我转换一个字符串,例如
String str = ".12";
String str2 = "0.12"
to Bigdecimal,两者都给我输出 0.12。我的输出要求我不要更改符号 - 在这种情况下,有没有一种方法可以从字符串进行 BigDecimal 转换,而不是为 .12 添加 0?当它保持在 0.12 到 0.12 时,我还可以。
我只想让 Bigdecimal 完全按照原样保留字符串输入,不添加零,也不删除零。
我正在这样做:
Bigdecimal bd = new Bigdecimal(str);
bd.toString() gives me 0.12
如您所见,here 点将整数部分与分数部分分开。因此,在您的情况下,将 0 添加为整数部分,因为您只传递了一个 fractionPart
希望对您有所帮助:)
如果可以,您可以为 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
一种方法是格式化从 toString()
返回的字符串并手动删除前导零:
bd.toString().replaceFirst("^0\.", ".");
在我的代码中,如果我转换一个字符串,例如
String str = ".12";
String str2 = "0.12"
to Bigdecimal,两者都给我输出 0.12。我的输出要求我不要更改符号 - 在这种情况下,有没有一种方法可以从字符串进行 BigDecimal 转换,而不是为 .12 添加 0?当它保持在 0.12 到 0.12 时,我还可以。
我只想让 Bigdecimal 完全按照原样保留字符串输入,不添加零,也不删除零。
我正在这样做:
Bigdecimal bd = new Bigdecimal(str);
bd.toString() gives me 0.12
如您所见,here 点将整数部分与分数部分分开。因此,在您的情况下,将 0 添加为整数部分,因为您只传递了一个 fractionPart
希望对您有所帮助:)
如果可以,您可以为 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
一种方法是格式化从 toString()
返回的字符串并手动删除前导零:
bd.toString().replaceFirst("^0\.", ".");