如何使用C#解析科学格式的double

本文关键字:格式 double 何使用 | 更新日期: 2023-09-27 18:25:25

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

 0.12961924D+01

如何使用C#将其解析为双精度?

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

// 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)

如何使用C#解析科学格式的double

我会首先对这个字符串进行一些操作,将其从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);

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

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

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