【问题标题】:Decimal.TryParse doesn't parse my decimal valueDecimal.TryParse 不解析我的十进制值
【发布时间】:2012-07-03 13:06:14
【问题描述】:

当我尝试转换 0.1 之类的内容(来自文本框中的用户)时,我的值 b 始终为 false。

bool b = Decimal.TryParse("0.1", out value);

怎么会在这里工作?

【问题讨论】:

  • 你的语言环境是什么?
  • 它对我有用,你在使用它之前提到过价值吗?
  • Nikhil,如果返回值是false,那么它非常无关紧要。
  • 我刚刚在 Mono 中尝试过这个,很抱歉不在 windows 盒子 atm 附近,并且该方法有效。这是您的确切代码吗?你的 out 变量的类型是什么?你能检查你的 out 变量,它是否已填充?
  • 我的代码现在是:bool isFutureValueDecimal = Decimal.TryParse("0.1", out futurevalue); if (isFutureValueDecimal == false) { e.Handled = true; }

标签: c# decimal tryparse


【解决方案1】:

指定解析的文化。您当前的文化使用一些不同的数字格式,可能是0,1

这将成功解析字符串:

bool b = Decimal.TryParse("0.1", NumberStyles.Any, CultureInfo.InvariantCulture, out value);

【讨论】:

  • 这才是真正的解决方案
【解决方案2】:

参加聚会为时已晚,但我打算建议强制文化进入美国,但 Invariant 是更好的 sln

decimal value;
bool b = Decimal.TryParse("0.1", NumberStyles.Any, new CultureInfo("en-US"), out value);

【讨论】:

    【解决方案3】:

    在重载方法中使用Culture

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      相关资源
      最近更新 更多