我想将字符串转换为 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();
}
最佳答案
使用正确的区域设置可以避免更改小数符号:
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"
关于java - 将 String 转换为 BigDecimal,始终保留两位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51960718/