Java 失败字符串到大十进制转换的最佳方法是什么?

Java 失败字符串到大十进制转换的最佳方法是什么?,java,parsing,bigdecimal,Java,Parsing,Bigdecimal,以下是我现在拥有的: String text = "-9,23"; Character character = '.'; DecimalFormatSymbols symbols = new DecimalFormatSymbols(); symbols.setDecimalSeparator(character); symbols.setGroupingSeparator(character.equals('.') ? ',' : '.'); DecimalFormat format =

以下是我现在拥有的:

String text = "-9,23";
Character character = '.';

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(character);
symbols.setGroupingSeparator(character.equals('.') ? ',' : '.');

DecimalFormat format = new DecimalFormat();
format.setDecimalFormatSymbols(symbols);
format.setParseBigDecimal(true);

ParsePosition parsePosition = new ParsePosition(0);
Object object = format.parse(text, parsePosition);

其结果是-923,而不是某种java.lang.NumberFormatException,我希望在这个场景中可以得到它。当传入的基于字符串的数字与来自db层的预定义格式标准US或EU不匹配时,我需要我的代码失败。最好的方法是什么?

很好,看起来分组字符被剥离,然后字符串被计算,所以如果十进制字符是“.”,分组字符变成“,”,然后被剥离,字符串变成-923,这就是您所说的返回值。对,但是我希望它抛出一个异常,因为-9,23不应该真正匹配x,xxx.xx格式,也不应该导致一个-923的BigDecimal对象。它不会抛出一个异常,因为它是为另一个对象编码的,它只会忽略逗号或将它们视为小数点。。您需要查看正则表达式,看看您的数字是UK还是isUs。@GoeAlgile:我认为您需要查看区域设置: