String str="123456.7855456677";
ParsePosition parsePosition = new ParsePosition(0);
NumberFormat numberFormat=new DecimalFormat();
Number number=numberFormat.parse(str, parsePosition);
if(parsePosition.getIndex()!=str.length())
{
throw new IllegalArgumentException();
}
numberFormat.setMaximumFractionDigits(2);
numberFormat.setRoundingMode(RoundingMode.HALF_UP);
double value=Double.parseDouble(numberFormat.format(number));
System.out.println(value);
str
假设用户可以自由输入任何字符串,这段代码中字符串类型变量的值可以是任何动态值。
倒数第二行的Double.parseDouble()
方法导致抛出 。java.lang.NumberFormatException
删除该行numberFormat.setMaximumFractionDigits(2);
并将 RegEx 设置为DecimalFormat
类的重载构造函数,而不是像往常一样,
NumberFormat numberFormat=new DecimalFormat("#.##");
抑制异常。
那么,为什么它不工作呢?