2011-09-23 29 views
5
private void ReadUnitPrice() 
    { 
     Console.Write("Enter the unit gross price: "); 
     unitPrice = double.Parse(Console.ReadLine()); 
    } 

これはうまくいくはずですが、わかりやすいものがありません。ダブル入力するたびに私にエラーが表示されます:System.FormatException:入力文字列が正しい形式ではありませんでした。 'unitPrice'がdoubleとして宣言されていることに注意してください。System.FormatException:入力文字列が正しい形式ではありません

+0

あなたはどのような値を入力していますか? –

+0

4.5〜5.5のような0〜10の値 –

答えて

6

間違ったコンマ区切り記号を使用している場合や、二重値を指定している間に他のエラーがあった可能性もあります。 このような場合は、例外的に安全なDouble.TryParse()メソッドを使用する必要があります。また、指定されたフォーマットプロバイダ、基本的にはカルチャを使用することができます。

public static bool TryParse(
    string s, 
    NumberStyles style, 
    IFormatProvider provider, 
    out double result 
) 

The TryParse method is like the Parse(String, NumberStyles, IFormatProvider) method, except this method does not throw an exception if the conversion fails. If the conversion succeeds, the return value is true and the result parameter is set to the outcome of the conversion. If the conversion fails, the return value is false and the result parameter is set to zero.

EDIT:

if(!double.TryParse(Console.ReadLine(), out unitPrice)) 
{ 
    // parse error 
}else 
{ 
    // all is ok, unitPrice contains valid double value 
} 

をコメントする回答もあなたが試すことができます:

double.TryParse(Console.ReadLine(), 
       NumberStyle.Float, 
       CultureInfo.CurrentCulture, 
       out unitPrice)) 
+0

私はちょうどそれを実際に試してみました。 –

+0

TryParseはその引数でより多くのparametresを取ります。私はC#の初心者であり、TryParseがどこに結果を送るのかよく分かっていないので(ブールを返すので)スティックします今のところParseで。 「2つの戻り値を受け取る」というのは私の頭の中で少し気になるようですが、今後の使用のためにTryParseを覚えておきます。ありがとう。 –

+0

@ Ryuji89:更新を見る、EDITパート – sll

関連する問題