【问题标题】:How I can parse string double with "E" at the end?我如何在末尾用“E”解析字符串双精度?
【发布时间】:2017-12-30 13:37:10
【问题描述】:

我试过像这样解析双精度:

CultureInfo cultureInfo = new CultureInfo("");
cultureInfo.NumberFormat.NumberDecimalSeparator = ",";
if (double.TryParse("9,27823508234186E", NumberStyles.Float, cultureInfo, out a))
   {...}

我不能使用 Math.Round。我用了 ”。”和“,”,我使用了不同的 NumberStyles。 我尝试通过在“E”之后添加“0”来做到这一点,这很有效,但每次都添加零是不好的做法。

【问题讨论】:

  • 尝试以下操作: CultureInfo info = CultureInfo.InvariantCulture; info.NumberFormat = new NumberFormatInfo() { NumberDecimalSeparator = ","}; double.TryParse("9,27823508234186E", NumberStyles.Float, info, out a);

标签: c# parsing double exponent


【解决方案1】:

对您正在解析的字符串使用 TrimEnd() 函数:

if (double.TryParse("9,27823508234186E".TrimEnd('E'), NumberStyles.Float, cultureInfo, out a))
   {...}

这将删除字符串末尾的所有“E”。此外,如果您在末尾没有“E”的数字上使用它,这不会引发任何异常。它只会什么都不做。

【讨论】:

  • 嗯.. 我不知道它有多好,但现在这是解决它的唯一方法。谢谢你的回答。
  • 你可以将它添加到任何你想解析为双精度的字符串中,如果字符串末尾没有“E”也不会造成问题,所以这样是安全的。
  • 谢谢,我会用的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
  • 2012-03-11
相关资源
最近更新 更多