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
、ユーザーが任意の文字列を自由に入力できると仮定して、任意の動的な値にすることができます。
最後から 2 行目のDouble.parseDouble()
メソッドにより、がスローされます。java.lang.NumberFormatException
行を削除し、代わりにクラスnumberFormat.setMaximumFractionDigits(2);
のオーバーロードされたコンストラクターに RegEx を設定します。DecimalFormat
NumberFormat numberFormat=new DecimalFormat("#.##");
例外を抑制します。
では、それ以外の場合はなぜ機能しないのでしょうか。