2012-02-20 99 views
1

我必须格式化一个双精度的集合到2个小数位,并用逗号(,)将它显示在控制台应用程序中。格式化IEnumerable <double>同时在控制台中显示

我已经使用了以下内容:

var result = GetResults() //returns 1.234125, 3.56345, 6.43254 

Console.WriteLine(string.Join(",",result) 

然而,这并不格式化值小数点后2位。我正在向控制台显示1.23,3.56,6.43。此外,“结果”集合中的元素可能只有几千倍。因此,我正在寻找一个优化的代码块,它不会涉及任何拳击,并且会花费最少的时间将自己显示到控制台。

感谢, -Mike

+2

打印到控制台的成本远远大于任何拳击的成本。 – SLaks 2012-02-20 15:02:15

+0

GetResults()方法的返回类型是什么? – sll 2012-02-20 15:09:43

+0

@SLaks:百万对象拳击会有所作为 – sll 2012-02-20 15:10:06

回答

0

Console类有效缓冲所有接收到的数据,所以多个Console.Write电话居然不降低permormance。你也不必把所有的文字都放在一个巨大的片段中。所以我的回答是:

IEnumerable<double> result = new double[] { 1.1234, 2.2345, 3.3456 }; 
foreach (double item in result) 
    Console.Write ("{0},", item.ToString("0.00")); 
Console.WriteLine(); 

显式double.ToString调用允许避免不必要的装箱。但我建议你在使用更复杂的方法之前,先比较两种性能。

另请注意,在某些文化中,逗号已被用作分数分隔符。