Double ToString() 没有科学记数法,不返回 0.0 的字符串
Posted
技术标签:
【中文标题】Double ToString() 没有科学记数法,不返回 0.0 的字符串【英文标题】:Double ToString() no scientific notation not returning a string for 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 等,只要它是数字的而不是科学的。
编辑:我知道我可以添加一个条件语句来检查字符串是否为空,但我很想看看是否有办法使用字符串格式化。
【问题讨论】:
【参考方案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);
希望你喜欢(我不喜欢)。
【讨论】:
以上是关于Double ToString() 没有科学记数法,不返回 0.0 的字符串的主要内容,如果未能解决你的问题,请参考以下文章
decimal and double ToString problem
java中数值类型转换的问题,double类型显示科学计数法了。