转换 ToString 时从指数中删除前导零

Remove leading zeros from exponent when converting ToString

假设我有一个双 n = 0.00000123456

在一种情况下,我可能想显示一位小数 n.ToString("E1") => "1.2E-006"

在另一种情况下,我可能想显示 4 位小数 n.ToString("E4") => "1.2346E-006"

但我不希望指数中有前导零,这些数字适用于有限 space 的轴。

我想看看“1.2E-6”和“1.2346E-6”:不错 - 没有前导零!

我读了 how can I remove zeros from exponent notation,我发现我可以分别使用 n.ToString("0.0E+0") 和 n.ToString("0.0000E+0")。

太好了,但是,考虑到我有一个整数变量 requiredDecimalPlaces 随时告诉我所需的小数位数,我是否必须创建此格式字符串一个循环,每次都加零?!这似乎很老套。如果这是这样做的方式,有人可以告诉我吗?但就像我说的,将我的变量 requiredDecimalPlaces(假设值为 4)转换为字符串“0.0000”,然后将 "E+0" 附加到末尾以创建“0.0000E+0”似乎过于复杂。

没有标准的数字格式可以做到这一点,因此您必须创建一个自定义格式。创建该格式的最简单方法如下。

number.ToString("0." + new string('0', decimalPlaces) + "E+0");