Double ToString()没有科学记数法没有返回0.0的字符串

时间:2013-10-11 13:01:57

标签: c# string-formatting

我需要以十进制表示法返回double的字符串表示形式而不是科学表达式,我在这里使用了已接受解决方案的修改版本:

Double ToString - No Scientific Notation

private static readonly string format = "." + new string('#', 324);
foo.ToString(format);

这适用于除了等于零的值,即0,0.0,0.000等,它返回一个空字符串。

对于任何零值,返回表示0的字符串的最简单方法是什么。

如果字符串为0或0.0等,我不介意,只要它是数字的而不是科学的。

编辑:我知道我可以添加条件语句来检查字符串是否为空但我有兴趣看看是否有办法使用字符串格式化。

4 个答案:

答案 0 :(得分:1)

您可以随时添加如下语句:

foo.ToString(format)

if (string.IsNullOrEmpty(foo))
foo = "0";

答案 1 :(得分:1)

试试这个:

  string format = "0." + new string('#', 324);

它会在点之前添加零(如果需要)

参见示例ideone

答案 2 :(得分:0)

也许这就是你要找的东西:

        double aa = 12.33333;

        string foo = String.Format("{0:0.#}", System.Convert.ToSingle(aa));

答案 3 :(得分:0)

Argh,人们使用的那些黑客。在这里给一个黑客更多:

foo.ToString(format + ";" + "-" + format + ";" + "0");

static readonly string newFormat = format + ";" + "-" + format + ";" + "0";

在代码源中的 format下定义,只需:

foo.ToString(newFormat);

当然这是一个常数,所以它确实是:

foo.ToString(.####################################################################################################################################################################################################################################################################################################################################;-.####################################################################################################################################################################################################################################################################################################################################;0);

希望你喜欢它(我不喜欢)。