2

我有一个双,我想把它改成一个字符串,像这样:

double value;
string myString = value.toString();

当 value 是点后少于 4 位的数字时,它可以正常工作。例如,如果值为 0,则 myString 将为 0。如果值为 0.01,则 myString 将为 0.01。

但如果 value 在点后有 4 位或更多位,myString 会使用浮点创建(例如,1E-05)。

我希望以 0.0000000X 的格式为点后的任意位数创建 myString,并且永远不要使用 1E-0X 方法。我还希望 myString 尽可能短,例如当值为 0 时,我希望 myString 为 0(而不是 0.000000)。

我该怎么做?谢谢

4

3 回答 3

4

我不确定是否有一个标准的数字格式字符串可以满足您的要求,但您可以使用自定义格式字符串:

double d = 0.0000003;
Console.WriteLine(d.ToString("0.#################"));

我不相信它会处理最终具有超出我指定的有效数字的值。例如,扩展散列的数量对诸如 3e-20 之类的数字没有帮助。这对你来说是个问题吗?

请注意,因为您使用的是double而不是decimal,所以在算术之后的某些情况下您可能会感到惊讶......如果您试图保留一个精确数字非常重要的值,您可能应该使用它decimal

于 2012-12-12T07:35:25.550 回答
0

使用接受格式字符串作为参数的double.ToString重载之一。

检查有关标准数字格式字符串自定义数字格式字符串的信息,以了解有关指定所需格式的信息。

于 2012-12-12T07:33:35.177 回答
-1

Double.ToString()的msdn 页面很好地解释了它。

string myString = value.ToString("R");

会做的工作。

于 2012-12-12T07:37:20.840 回答