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


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

0.0001234567

格式化

(0.0000123456).ToString("E4");

展会

1.2345E-004

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

1.2345E-4

11997
2018-01-09 06:53


起源



答案:


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

"0.0000E+0"

所以它会显示出来

(0.0000123456).ToString("0.0000E+0"); //1.2345E-5 
(0.0000120000).ToString("0.#E+0");    //1.2000E-5

如果您不需要在使用小数点后显示4位数

"0.#E+0"

所以它会显示出来

(0.0000123456).ToString("0.#E+0"); //1.2E-5
(0.0000120000).ToString("0.#E+0"); //1.2E-5

3
2018-01-09 07:31



你的假设是正确的,我需要前一位数和小数点后4位数。 - AaA


答案:


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

"0.0000E+0"

所以它会显示出来

(0.0000123456).ToString("0.0000E+0"); //1.2345E-5 
(0.0000120000).ToString("0.#E+0");    //1.2000E-5

如果您不需要在使用小数点后显示4位数

"0.#E+0"

所以它会显示出来

(0.0000123456).ToString("0.#E+0"); //1.2E-5
(0.0000120000).ToString("0.#E+0"); //1.2E-5

3
2018-01-09 07:31



你的假设是正确的,我需要前一位数和小数点后4位数。 - AaA


引用 MSDN

格式说明符的情况表示是否在指数前加上“E”或“e”。指数总是由加号或减号组成,最少由三位数组成。如果需要,指数用零填充以满足此最小值。

这是标准数字说明符。

但是,随着 自定义数字格式,你可以设置0的数量:

987654 ("#0.0e0") -> 98.8e4

对于你的情况,它是

(0.0000123456).ToString("#0.0E0"); //12.3E-6

在BobSort评论后编辑

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

(0.0000123456).ToString("0.00#E0"); //1.23E-5

11
2018-01-09 06:58



你的答案足够接近,唯一的问题是科学概念只需要小数点前一位数。我想我需要从格式字符串的开头删除# - AaA