Двойное преобразование в строку (инженерный формат) - PullRequest
2 голосов
/ 16 марта 2012

Я ищу способ использовать очень специфический формат строки:

 -2.71405E-03  0.00000E+00 -2.71405E-03 -2.71405E-03  0.00000E+00 -2.71405E-03
 -2.71405E-03 -2.71405E-03 -2.71405E-03 -2.71405E-03 -2.71405E-03 -2.71405E-03
 -2.71405E-03 -2.71405E-03 -2.71405E-03 -5.42809E-03 -2.71405E-03 -2.71405E-03

Это формат, используемый в файле UFF58.Этот формат описывается строкой формата FORTRAN E13.5, что означает 13 (в отличие от языков, таких как C / C ++, это также верхняя граница) символов, 5 десятичных цифр.У меня есть этот код:

double d = -2.71405E-03;
d.ToString( "E5" ).Dump();

В LINQPad это дает вывод: -2.71405E-003.

Я не могу найти свойство NumberFormatInfo класса, которое может ограничить размер (символколичество использованных) экспоненты.Любая идея, как решить эту проблему с изменением формата строки или NumberFormatInfo?

Ответы [ 2 ]

3 голосов
/ 16 марта 2012

Если вам нужно, чтобы оно содержало 5 цифр после десятичной точки, вы можете сделать это:

double d = -2.71405E-03;
d.ToString("0.00000E+00");
1 голос
/ 16 марта 2012

Попробуйте это:

string MyString = d.ToString("0.#####E-00");
...