6
    private void ReadUnitPrice()
    {
        Console.Write("Enter the unit gross price: ");
        unitPrice = double.Parse(Console.ReadLine());
    }

这应该可行,但我错过了一些明显的东西。每当我输入双精度时,都会出现错误:System.FormatException:输入字符串格式不正确。请注意,'unitPrice' 被声明为双精度。

4

1 回答 1

7

可能是您使用了错误的逗号分隔符号,甚至在指定双精度值时出现了其他错误。无论如何,在这种情况下,您必须使用Double.TryParse()方法,该方法在异常方面是安全的,并且允许指定格式提供者,基本上是要使用的文化。

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

TryParse 方法与 Parse(String, NumberStyles, IFormatProvider) 方法类似,只是此方法在转换失败时不会抛出异常。如果转换成功,则返回值为 true,并将 result 参数设置为转换的结果。如果转换失败,则返回值为 false,并将 result 参数设置为零。

编辑:回答评论

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))
于 2011-09-23T17:38:30.447 回答