如何从指数表示法中删除零

AaA*_*AaA 11 c# format-specifiers number-formatting

我正在使用指数格式来格式化C#中的十进制数.例如,如果数字是

0.0001234567
Run Code Online (Sandbox Code Playgroud)

格式化

(0.0000123456).ToString("E4");
Run Code Online (Sandbox Code Playgroud)

展会

1.2345E-004
Run Code Online (Sandbox Code Playgroud)

如何从指数中删除前导零,使其如下所示?

1.2345E-4
Run Code Online (Sandbox Code Playgroud)

Cha*_*esB 11

引用MSDN:

格式说明符的情况表示是否用"E"或"e"作为前缀的前缀.指数始终由加号或减号以及至少三位数组成.如果需要,指数用零填充以满足此最小值.

这是标准的数字说明符.

但是,使用自定义数字格式,您可以设置0的数量:

987654 ("#0.0e0") -> 98.8e4
Run Code Online (Sandbox Code Playgroud)

对于你的情况,它是

(0.0000123456).ToString("#0.0E0"); //12.3E-6
Run Code Online (Sandbox Code Playgroud)

在BobSort评论后编辑

如果您需要科学记数法,您可以指定在十进制之前只需要一位数字,具体如下:

(0.0000123456).ToString("0.00#E0"); //1.23E-5
Run Code Online (Sandbox Code Playgroud)


Bis*_*tro 3

假设您需要始终显示小数点后 4 位数字,请尝试

"0.0000E+0"
Run Code Online (Sandbox Code Playgroud)

所以它会显示

(0.0000123456).ToString("0.0000E+0"); //1.2345E-5 
(0.0000120000).ToString("0.#E+0");    //1.2000E-5
Run Code Online (Sandbox Code Playgroud)

如果不需要显示小数点后 4 位数字,请使用

"0.#E+0"
Run Code Online (Sandbox Code Playgroud)

所以它会显示

(0.0000123456).ToString("0.#E+0"); //1.2E-5
(0.0000120000).ToString("0.#E+0"); //1.2E-5
Run Code Online (Sandbox Code Playgroud)