【问题标题】:Reading a double number from the console [duplicate]从控制台读取双数[重复]
【发布时间】:2014-05-01 19:05:26
【问题描述】:

我正在尝试从控制台读取一个数字,但如果它是通过逗号输入的(例如 2,56),则无法成功解析。只有这样输入才能解析:2.56 我该如何改变呢? 这是一个示例代码:

       if (double.TryParse(stringElements[i], out doubleNum))
                {
                    averageTime.Add(doubleNum);
                }

【问题讨论】:

  • 你的CurrentCulture 是什么?还要显示您的代码。顺便说一句,我不喜欢这个.Replace 的建议。因为如果你的字符串有, 作为千位分隔符,你的代码也会被破坏并且你的解析可能会失败(当然取决于你当前的文化线程)。
  • 我认为@SonerGönül 的评论是正确的,但作为一个黑客,如果你确定它是一个数字,你能不能简单地用句号替换单个逗号然后解析。
  • 用户应该使用什么语言?保加利亚语?使用适当的CultureInfo。不要用string.Replace替换分隔符!
  • @Mihayloff: 你想支持 only 逗号(即2,56 有效,但2.56 会失败)还是希望能够支持同时两种格式?
  • @Mihayloff:那么 Replace 是一个快速的 hack 修复(假设数千个分隔符对您来说不是问题)。在我的脑海中,也许更永久的事情是尝试用一种文化(小数)解析,如果失败,然后尝试用不同的文化(逗号),如果失败,假设输入是垃圾。

标签: c# console double


【解决方案1】:

用“。”替换逗号像这样:

将您的号码保存在变量 X 中,然后

if (double.TryParse((X).Replace(",", "."), out tmp))
{

}

【讨论】:

    【解决方案2】:

    替换为“。”

    Convert.ToDouble("2,56".Replace(",", "."));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多