【问题标题】:How do I convert a string to double using input? [duplicate]如何使用输入将字符串转换为双精度? [复制]
【发布时间】:2019-05-29 21:54:12
【问题描述】:

我想要求用户输入一个字符串类型的数字(因为这是 C# 中唯一的方法),然后将其转换为双精度类型。

private static string InputDouble(double prompt)
{
    Console.WriteLine("{0:s}: ", prompt);
    return Convert.ToDouble(Console.ReadLine());
}

我希望有人对此有解决方案。

【问题讨论】:

  • 你的方法应该返回double
  • 什么问题? (除了:你的方法应该返回双精度)。
  • 哦,哈哈,没看到 -_- 谢谢!
  • 记得捕捉异常,例如FormatException
  • @ValentinP 这是一个非常糟糕的方法来防止错误格式的输入被解析。最好使用TryParse。当您可以一开始就避免异常时,不要捕获异常。

标签: c# type-conversion


【解决方案1】:

你可以使用Double的TryParse方法:

public Double? StringToDouble(String input){
    if(Double.TryParse(input, out Double d)) {
        Console.WriteLine("The double value is {0}", d);
        return d;
    }
    else{
       Console.WriteLine("The input string was not in correct format");
   }
   return null;
}

TryParse 方法相对于Parse 方法的优势在于,如果输入的格式不正确,它不会抛出任何异常,而是返回一个布尔值,指示该值是否已成功解析或不是。

【讨论】:

  • OP的问题不在于字符串无法解析。因此,您的解决方案根本不会帮助他/她。
  • @HimBromBeere:虽然我不太同意你的观点,但我改进了我的答案。
【解决方案2】:

使用Double.Parse:

private static double InputDouble(double prompt)
{
    Console.WriteLine("{0:s}: ", prompt);
    return Double.Parse(Console.ReadLine());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 2014-01-06
    相关资源
    最近更新 更多