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

5 c# formatting parsing fortran

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

 0.12961924D+01
Run Code Online (Sandbox Code Playgroud)

如何使用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)
Run Code Online (Sandbox Code Playgroud)

Kei*_*thS 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);
Run Code Online (Sandbox Code Playgroud)