System.FormatException:输入字符串的格式不正确

发布于 2024-12-05 23:48:18 字数 285 浏览 0 评论 0原文

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

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

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

This should work, but I'm missing something obvious. Whenever I input a double it gives me the error: System.FormatException: Input string was not in a correct format.
Note that 'unitPrice' is declared as a double.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一百个冬季 2024-12-12 23:48:18

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

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

TryParse 方法类似于 Parse(String, NumberStyles,
IFormatProvider) 方法,但此方法不会抛出
如果转换失败则异常。如果转换成功,则
返回值为 true 并且结果参数设置为结果
转换。如果转换失败,返回值为 false
结果参数设置为零。

编辑:回答评论

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))

It could be that you're using wrong comma separation symbol or even made an other error whilst specifying double value.
Anyway in such cases you must use Double.TryParse() method which is safe in terms of exception and allows specify format provider, basically culture to be used.

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: Answer to comment

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

Also you can try:

double.TryParse(Console.ReadLine(), 
                NumberStyle.Float, 
                CultureInfo.CurrentCulture, 
                out unitPrice))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文