使用Console.WriteLine时,是否可以设置double的默认格式

时间:2014-10-27 23:41:38

标签: c# .net console.writeline

在向控制台写入double值时是否有设置默认格式的选项?

我有很多double个值要输出到控制台,我需要将格式设置为所有值的两位小数,例如Math.Round(number, 2)

我可以为所有人设置吗?

现在我正在使用:

Console.WriteLine("{0} x {1} x {2}",
                  Math.Round(a, 2), Math.Round(b, 2), Math.Round(c, 2));

2 个答案:

答案 0 :(得分:3)

Console.Writeline只是一个向控制台输出字符串的函数。您无法更改字符串的“默认”格式,因此您的问题的基本答案是

但是,您的代码可以简化。通过指定格式字符串,您可以避免使用Math.Round

Console.WriteLine("{0:D2} x {1:D2} x {2:D2}", a, b, c);

“D2”是小数点后2位小数。有关其他常见格式字符串,请参阅MSDN。请注意,这是有效的,因为Console.Writeline会在引擎盖下调用String.Format

关于为什么你不能这样做; String.Format接受每个参数并在其上调用ToString。然后它应用格式化字符串(如果有的话)。您无法覆盖ToString double,因此无法更改“默认”。

答案 1 :(得分:1)

另一种可能性,如果您发现必须使用Math.Round(或对数字执行其他操作),则可以编写自己的方法来舍入数字。

这将对您传入的每个数字进行舍入,然后从数字中创建一个字符串(在每个数字之间放置一个" x"类似于您的输出):

private static void WriteNumbers(IEnumerable<double> numbers)
{
    Console.WriteLine(string.Join(" x ", numbers.Select(n => Math.Round(n, 2))));
}

然后只需传递一系列双打来操作:

WriteNumbers(new[] {2.2344, 3.323, 5.23432});

输出:

  

2.23 x 3.32 x 5.23