Java-当我试图将9999999999999转换为一个大十进制数时,为什么会得到null?

Java-当我试图将9999999999999转换为一个大十进制数时,为什么会得到null?,java,bigdecimal,Java,Bigdecimal,这是我的密码: String value = "9999999999999"; Character decimalFormat = '.'; DecimalFormatSymbols symbols = new DecimalFormatSymbols(); symbols.setDecimalSeparator(decimalFormat); symbols.setGroupingSeparator(decimalFormat.equals('.') ? ',' : '.'); Decimal

这是我的密码:

String value = "9999999999999";
Character decimalFormat = '.';
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(decimalFormat);
symbols.setGroupingSeparator(decimalFormat.equals('.') ? ',' : '.');
DecimalFormat format = new DecimalFormat();
format.setDecimalFormatSymbols(symbols);
format.setParseBigDecimal(true);
ParsePosition parsePosition = new ParsePosition(0);
BigDecimal result = (BigDecimal) format.parse(value, parsePosition);

当我将999999999999或9999999999999.999999999999作为“值”传递到代码中时,我得到null。为什么?

1它工作得非常完美,即使你把带字母的坏数字放在里面,你也会得到开始

2除非字符串以字母开头:X999为空、或为空。

3A所以我怀疑还有另一个代码修改值。

3B您不使用普通库(导入java.text…)

4最后一种方法:跟踪每个调用。

解析的作用是:


该方法尝试从pos给定的索引开始解析文本。如果解析成功,则pos的索引将更新为使用的最后一个字符后的索引(解析不一定使用字符串末尾的所有字符),并返回解析后的数字。更新后的pos可用于指示下一次调用此方法的起点。如果发生错误,则不会更改pos的索引,pos的错误索引将设置为发生错误的字符的索引,并返回null

decimalFormat的值是多少?从哪里得到null?如果你打印出结果对象,它不会给你正确的值吗?我得到:result=null也许你的值字符串中有一些空间?我粘贴了代码(修订版2),效果很好。在打印的末尾添加打印
99999999999