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