我有一个双倍,我需要四舍五入到小数点3位。我不知道如何准确地实现Math.Round。到目前为止,这就是我所拥有的:
double distance= Math.Sqrt(deltax + deltay);
Math.Round((decimal)distance, 3);
Console.WriteLine("Distance :" + distance);发布于 2016-05-28 13:46:21
使用Math.Round的返回值(Uwe Keim已经注意到)并删除十进制转换。
double distance = Math.Sqrt(10.438295 + 10.4384534295);
Console.WriteLine("Distance :" + Math.Round(distance, 3));发布于 2016-05-28 13:49:02
不要使用Math.Round()包围它,在输出字符串格式化程序中包围它:
double distance = Math.Sqrt(deltax + deltay);
Console.WriteLine("Distance :{0:f3}", distance);您几乎从不希望使用Math.Round()来格式化输出。
原因是,如果要将输出格式化为小数点3位,通常需要显示尾随零以指示所显示的DPs数。
例如,给定
double x = 0.1;然后
double rounded = Math.Round(x, 3);
Console.WriteLine(rounded);将显示0.1,而
Console.WriteLine("{0:f3}", x);将显示0.100,它会立即告诉用户,它被舍入为3 dps。
如果要从输出中删除尾随零,则可以使用Math.Round(),但我要使用###字符串格式化程序:
Console.WriteLine("{0:0.###}", x);这将使1.2345成为1.235,1.0将被替换为1。
https://stackoverflow.com/questions/37499729
复制相似问题