0

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

Double ToString - 没有科学记数法

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

除了对于等于零的值(即 0、0.0、0.000 等)返回空字符串之外,这很有效。

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

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

编辑:我知道我可以添加一个条件语句来检查字符串是否为空,但我很想看看是否有办法使用字符串格式来做到这一点。

4

4 回答 4

1

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

foo.ToString(format)

if (string.IsNullOrEmpty(foo))
foo = "0";
于 2013-10-11T13:08:04.430 回答
1

尝试这个:

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

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

查看示例ideone

于 2013-10-11T13:20:09.933 回答
0

啊,人们使用的那些黑客。在这里再给一个技巧:

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

或与

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

format代码源中定义,只是:

foo.ToString(newFormat);

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

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

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

于 2013-10-11T14:46:58.890 回答
0

也许这就是您正在寻找的:

        double aa = 12.33333;

        string foo = String.Format("{0:0.#}", System.Convert.ToSingle(aa));
于 2013-10-11T13:11:39.213 回答