100L のような数値を Double.parseDouble() に渡すと、NumberFormatException が発生します。ただし、100L は有効な数値です。
編集: 100d または 100f を渡す場合、エラーは発生しません。100Lでしか買えない
100L のような数値を Double.parseDouble() に渡すと、NumberFormatException が発生します。ただし、100L は有効な数値です。
編集: 100d または 100f を渡す場合、エラーは発生しません。100Lでしか買えない
100Lは、長い値100を表すリテラルです。文字列 "100L"はそうではないため、parseDouble()に渡すと、当然のことながら文句を言います。「L」をドロップすると、元気になるはずです。
更新:それparseDouble()
はリテラル構文が好きではないということではありません、それはあなたがその数を明示的に宣言したのが好きではないということですlong
(実際には浮動小数点型を探しているとき)。
JavaDocsから、Double.parseDouble();
DoubleクラスのvalueOfメソッドによって実行されるように、指定された文字列で表される値に初期化された新しいdoubleを返します。
構文、
public static double parseDouble(String s) throws NumberFormatException
Throws:
NumberFormatException - if the string does not contain a parsable double.
文字列が引数として渡されることを想定しています。「100L」は、文字列ではなく、値が長いリテラルです。エラーを回避するには、「100L」の代わりに「100」を使用してみてください。
100dまたは100fを渡してもエラーは発生しません。100Lでしか手に入らない?
parseDouble()はvalueOf( )を呼び出します。これは特に浮動小数点表現を探します。dとfはdoubleとfloatを表すため、すべてが正常に機能します。ただし、番号を明示的に指定する必要はありません。(100Lのように)
ご参考までに、
NumberFormatException:http:
//www.ideone.com/DMpUN正常に実行されます: http ://www.ideone.com/QdxXY
「文字列」の 100l は有効な数値ではありません。有効な二重文字列を渡すだけです。
class test{
public static void main(String... args){
System.out.println(Double.parseDouble("100.0000"));
}}
これはうまくいきます。別のユーザーが指摘したように、文字列に「100l」を渡すと機能しません。これは、l が long 値をリテラル数値として意味するためです。