我想将String转换为BigDecimal。 如果我使用 2,6 运行以下代码,则Java始终将字符串转换为 26 ,但是我想要的是 2.60 ,或者我有一个像 14,35 这样的字符串也应转换为正确的德语格式。
Locale in_ID = new Locale("de");
DecimalFormat nf = (DecimalFormat) NumberFormat.getInstance(in_ID);
nf.setParseBigDecimal(true);
if(betragFruehtsueck.equals(""))
{
betragFruehtsueck = "0.00";
}
if(betragMittagessen.equals(""))
{
betragMittagessen = "0.00";
}
betragFruehtsueck = betragFruehtsueck.replace(",", ".");
betragMittagessen = betragMittagessen.replace(",", ".");
BigDecimal bd = null;
BigDecimal bdM = null;
try {
bd = (BigDecimal) nf.parse(betragFruehtsueck);
bdM = (BigDecimal) nf.parse(betragMittagessen);
} catch (ParseException e) {
e.printStackTrace();
}
答案 0 :(得分:3)
使用正确的语言环境可以避免更改十进制符号:
DecimalFormat nf = (DecimalFormat) NumberFormat.getInstance(Locale.GERMANY);
nf.setParseBigDecimal(true);
BigDecimal bd = (BigDecimal) nf.parse("2,6");
这可确保应用2的小数位数:
bd = bd.setScale(2, RoundingMode.HALF_UP); //2.60
如果需要在相同的语言环境中将数字格式化为字符串,则应该可以进行以下操作(并且可能更适合bd.toString()
):
NumberFormat nf2 = NumberFormat.getNumberInstance(Locale.GERMANY);
nf2.setMinimumFractionDigits(2);
//outputs "2,60"