为什么Convert.ToString格式会以这种方式加倍?

JMK*_*JMK 2 c#

请考虑以下代码:

var rateUsed = 0.00000001;
var rateUsedConvertToString = Convert.ToString(rateUsed);
var rateUsedToString = rateUsed.ToString();
Run Code Online (Sandbox Code Playgroud)

而不是我的字符串是"0.00000001",它们都是"1E-08".我无法控制rateUsed的初始类型,它是一个double,我想要double的精确字符串表示.

为什么会发生这种情况,如果以双重值开始,如何将0.00000001作为字符串?

Mar*_*ell 6

如果你想要一个特定的格式,那么你需要通过参数告诉它你想要什么.可用的标准格式在这里,或者您可以使用自定义格式.将您选择的格式传递给ToString(format)Convert.ToString(value, format).

注意; 1E-8正好是0.00000001 - 这只是使用指数表示法,即这是1×10 -8

默认格式为"general",描述如下:

结果:最紧凑的定点或科学记数法

所以是的,有时它会使用科学(也称为指数)符号 - 具体来说,只要它比定点符号短,它就会这样做.也许尝试使用.ToString("F")