Java DecimalFormat(),俄罗斯计算机的问题

Java DecimalFormat(),俄罗斯计算机的问题,java,bigdecimal,decimalformat,Java,Bigdecimal,Decimalformat,我有一个BigDecimal,我把它转换成String,对它做一些修改。 最后,我尝试使用这部分代码将其转换回BigDecimal: DecimalFormat decimalFormat = new DecimalFormat(); decimalFormat.setParseBigDecimal(true); Amt = (BigDecimal) decimalFormat.parse(amount); 最后,我希望我的BigDecimal像这样,例如“135.40” 它可以工作,但在一台

我有一个
BigDecima
l,我把它转换成
String
,对它做一些修改。 最后,我尝试使用这部分代码将其转换回
BigDecimal

DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setParseBigDecimal(true);
Amt = (BigDecimal) decimalFormat.parse(amount);
最后,我希望我的
BigDecimal
像这样,例如
“135.40”

它可以工作,但在一台俄罗斯计算机上我得到了
“135.00”
。我不明白为什么,这是一个bug还是什么?

俄语中的十进制分隔符是
。这就是为什么数字在
处被截断的原因,这对于俄语语言环境无效

decimalFormat.parse(“135,40”)
应该为您提供所需的bigdecimal

如果要使用
解析数字,请更改
DecimalFormat
的区域设置:

NumberFormat formatter = NumberFormat.getNumberInstance(Locale.US);
DecimalFormat decimalFormat = (DecimalFormat)formatter;

我很困惑。定义什么是“俄语”计算机当我的代码在俄语计算机上执行时,或者当它使用“俄语”作为语言时,两者都不应该有区别。还有其他一些不同的东西产生了这种异常。这不是关于你使用哪台计算机,而是更像你使用哪种java版本。这是关于语言环境。我猜俄语语言环境使用
逗号作为十进制分隔符。我不确定
DecimalFormat
如何处理它,但请检查传入它的字符串。它要么通过
“135.40”
,并由于区域设置感知而需要一个
逗号
,要么通过
“135,40”
作为其他区域设置感知过程的输出,但查找
句点
。检查
decimalFormat.getDecimalFormatSymbols()
.toPattern()
idk.it wokrs,在解析BigDecimal之前,我使用了您提供的代码,它可以工作。非常感谢。