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

时间:2018-02-19 15:35:07

标签: c# decimal tostring number-formatting exponent

我们说我有一个双n = 0.00000123456

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

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

但是我不希望指数上的前导零,这些数字是针对空间有限的轴。

我希望看到" 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 告诉我任何时候需要的小数位数,我是否必须创建一个带有a的格式字符串循环,每次添加零?!这看起来很丑陋。如果这是方法,有人可以告诉我吗?但就像我说的那样,将我的变量requiredDecimalPlaces(值为4)说成一个字符串" 0.0000"然后附加" E + 0"到最后为了创造" 0.0000E + 0"似乎过于复杂。

1 个答案:

答案 0 :(得分:1)

没有标准数字格式可以执行此操作,因此您必须创建自定义格式。创建该格式的最简单方法如下:

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