Как разобрать double в научном формате с помощью C # - PullRequest
5 голосов
/ 22 февраля 2012

У меня есть числа, выведенные из программы 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)

Ответы [ 3 ]

7 голосов
/ 22 февраля 2012

Сначала я бы сделал несколько манипуляций с этой строкой, чтобы перевести ее из 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 голос
/ 22 февраля 2012

Поскольку все остальные предлагают заменить пробел знаком минус, что кажется сумасшедшим, я предложу это несколько более простое решение:

string input = " 0.12961924D+01";
double output = Double.Parse(s.Replace('D', 'E'));
1 голос
/ 22 февраля 2012

Это должно помочь: s = s.Replace(' ', '-').Replace('D', 'E');

...