1

2つの浮動小数点数の小数点以下2桁までの違いを計算するために、次のコードを記述しました。

double p = (Math.round((Double.parseDouble(a) - Double.parseDouble(a))*100))/100;

aおよびbは、小数点以下の桁数であるが、明らかに文字列の形式である文字列配列の値です。文字列の数値をdoubleに変換して計算を実行しようとしましたが、機能していないようで、次のエラーが発生します。

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "N/A"
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    at java.lang.Double.parseDouble(Unknown Source)

追加情報:これはWebからのデータを使用しており、以前は機能していたようですが、現在はある種のバグがあるようです。どうすればこれを解決できますか、そして何が問題ですか?

4

3 に答える 3

5

問題は、String変数が適切にフォーマットされていないことです。「N/A」は適切ではありませaん。bdouble

それらをどのように入手しているかを投稿してください。

于 2012-02-01T14:27:38.933 に答える
0

エラーの原因はjava.lang.NumberFormatException: For input string: "N/A"

つまり、aまたはbの値はN/Aです。

于 2012-02-01T14:29:04.320 に答える
0

コードにbはありません。このようなことをしようとしている場合:


String[] a = {"123","23"} ;
double p = (Math.round((Double.parseDouble(a[0]) - Double.parseDouble(a[1]))*100))/100;
System.out.println(p);

次に、タイプミスがある可能性があります。それは私にとってうまく印刷されるからです。

于 2012-02-01T14:35:58.327 に答える