Java 将字符串转换为始终保留两位小数的BigDecimal
我想把字符串转换成BigDecimal。 如果我使用2,6运行以下代码,java会将字符串转换为26,但我需要2.60,或者如果我有一个类似14,35的字符串,那么它也应该转换为正确的德语格式Java 将字符串转换为始终保留两位小数的BigDecimal,java,bigdecimal,Java,Bigdecimal,我想把字符串转换成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(be
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()
):
删除
.replace(“,”)
调用,因为德语语言环境要求逗号作为十进制分隔符。如果将它们转换为点(德语中的千位分隔符),它们将被忽略,因为您可以忽略千位分隔符。并为变量值
创建一个这样做的方法,这样您就不会为BetragfruehtCheck
(原文如此)复制完全相同的代码和betragMittagessen
。在解析的BigDecimal
上调用setScale(2)
,从2,6
解析2.60
。我得到上述程序的输出为2.6,输入为2,6。这不是你所期望的吗?@S.K.不,如果你接受上面的代码,你不会得到2.6的2,6-你得到26。
NumberFormat nf2 = NumberFormat.getNumberInstance(Locale.GERMANY);
nf2.setMinimumFractionDigits(2);
//outputs "2,60"