双字符串转换(工程格式)

时间:2012-03-16 13:48:14

标签: c# double string-formatting

我正在寻找一种方法来使用非常具体的字符串格式:

 -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 个答案:

答案 0 :(得分:3)

如果你需要它在小数点后有5位数,你可以这样做:

double d = -2.71405E-03;
d.ToString("0.00000E+00");

答案 1 :(得分:1)

试试这个:

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