【问题标题】:Double ToString() no scientific notation not returning a string for 0.0Double ToString() 没有科学记数法,不返回 0.0 的字符串
【发布时间】:2013-10-11 13:01:57
【问题描述】:

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

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 等,只要它是数字的而不是科学的。

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

【问题讨论】:

    标签: c# string-formatting


    【解决方案1】:

    您总是可以添加如下语句:

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

    【讨论】:

    • 我知道这是一个很好的答案,所以你会得到一个赞成票,但我希望有一种不那么老套的方法。
    【解决方案2】:

    试试这个:

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

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

    参见示例ideone

    【讨论】:

    • 谢谢,但我也试过了。对于第一个,我希望它返回“0.9”。第二个基本上正是我所做的,因为双精度值是 0.0,它返回一个空字符串。所以我删除了“#”中的#。因为它没有任何区别。不过,可能应该把它放在原来的问题中。
    【解决方案3】:

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

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

    【讨论】:

    • 我没有,但因为这只是 yourDouble.ToString() 的包装器,我想它会返回与在双精度上调用 ToString() 相同的结果?所以它会为 ToString 返回一个 0,但我无法将其格式化为不对大小数使用科学记数法。
    • 为什么要转换成Single(即float)?
    【解决方案4】:

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

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

    或与

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

    在代码源中定义format,就:

    foo.ToString(newFormat);
    

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 2017-12-24
      相关资源
      最近更新 更多