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));
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));
Console.Writeline
只是一个将字符串输出到控制台的函数。您无法更改字符串的“默认”格式,因此您的问题的基本答案是NO。
但是,您的代码可以简化。通过指定格式字符串,您可以避免使用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
adouble
因此无法更改“默认值”。
另一种可能性,如果你发现你必须使用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