【问题标题】:Something strange with string ToDouble conversion字符串 ToDouble 转换有些奇怪
【发布时间】:2015-06-19 18:12:24
【问题描述】:

我在Box.Text 中有555 555 555(我已经修剪了那个值) 然后我打电话

double result = Convert.ToDouble(Box.Text, CultureInfo.InvariantCulture);

我的结果是

555 555 584 

为什么???我一直在等待同样的 555 555 555 真的很奇怪的错误,或者我错过了什么?

我发现解决方案 555 555 584 是之前预先定义的最大值。 问题已结束

【问题讨论】:

  • 不知道,我无法根据给出的信息进行复制。如果我对"555555555" 运行相同的Convert.ToDouble(正如你所说的你修剪它)我得到555555555.0
  • 对不起..但这确实发生在我身上。
  • 这段代码产生了一个异常Convert.ToDouble("555 555 555", CultureInfo.InvariantCulture);你能添加用于打印出那个值的代码吗?
  • 设置断点,然后检查 Box.Text 中的真正值。或者在之前声明一个字符串并将 Box.Text 分配给它并输出值。
  • @curiousity 你可以在一个简单的控制台应用程序中验证自己。问题一定出在其他地方(即价值不是你想的那样,或者什么)

标签: c# double


【解决方案1】:

您的问题缺少某些内容。您的输入字符串不能有空格,并且您的输出不能包含空格。

double result = Convert.ToDouble("555 555 584", CultureInfo.InvariantCulture);

结果:

在 mscorlib.dll 中发生了“System.FormatException”类型的未处理异常

附加信息:输入字符串的格式不正确。

试试这个:

string value = Box.Text.Replace(" ", "");
double result = Convert.ToDouble(value, CultureInfo.InvariantCulture);

【讨论】:

  • 通过“(我已经修剪了那个值)”我猜他的意思是他删除了空格。
  • Box.Text 的参数输入很可能是原始原始文本然后...“未修剪”...即使修剪被定义为删除前导和/或尾随空格...不是消除所有空格。
【解决方案2】:

你也可以试试这个:

double result2 = Double.Parse("555555555");

附:将“555555555”替换为 Box.Text

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-14
    • 2011-12-27
    • 2020-02-05
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    相关资源
    最近更新 更多