如何使用C#解析科学格式的双精度

时间:2012-02-21 21:41:43

标签: c# parsing formatting fortran

我有以下格式从FORTRAN程序输出的数字:

 0.12961924D+01

如何使用C#将其解析为double?

我尝试了以下但没有成功:

// note leading space, FORTRAN pads its output so that positive and negative
// numbers are the same string length
string s = " 0.12961924D+01";
double v1 = Double.Parse(s)
double v2 = Double.Parse(s, NumberStyles.Float)

3 个答案:

答案 0 :(得分:7)

我首先会对此字符串进行一些操作,以便将其从FORTRAN格式化为.NET格式:

  • 修剪任何领先空间;如果有负号,我们想要它,但我们不想要空格。
  • 将“D”替换为“E”。

以下内容可以满足您的需求:

string s = " 0.12961924D+01";
s = s.Trim().Replace("D", "E");
//s should now look like "0.12961924E01"    
double v2 = Double.Parse(s, NumberStyles.Float);

答案 1 :(得分:1)

这应该有所帮助:s = s.Replace(' ', '-').Replace('D', 'E');

答案 2 :(得分:1)

由于其他人都建议用减号代替空间,这似乎很疯狂,我会提供这个更简单的解决方案:

string input = " 0.12961924D+01";
double output = Double.Parse(s.Replace('D', 'E'));