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

本文关键字:返回 字符串 ToString Double | 更新日期: 2023-09-27 18:34:50

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

双转串 - 无科学记数法

private static readonly string format = "." + new string('#', 324);
foo.ToString(format);
除了等于零的值(即 0、0.0

、0.000 等(之外,这很有效,它返回一个空字符串。

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

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

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

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

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

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

试试这个:

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

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

参见示例 ideone

也许这就是你要找的:

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

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

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

或与

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

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

foo.ToString(newFormat);

当然,这是一个常数,所以它真的是:

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

希望你喜欢它(我没有(。