C# 在距离公式中四舍五入到小数点后3位

C# 在距离公式中四舍五入到小数点后3位,c#,math,double,rounding,C#,Math,Double,Rounding,我有一个需要四舍五入到小数点后3位的双精度。我不知道如何准确地实现Math.Round。这就是我到目前为止所做的: double distance= Math.Sqrt(deltax + deltay); Math.Round((decimal)distance, 3); Console.WriteLine("Distance :" + distance); 使用Math.Round的返回值(已由注释)并删除十进制转换 double distance = Math.Sqrt(10.438295

我有一个需要四舍五入到小数点后3位的双精度。我不知道如何准确地实现Math.Round。这就是我到目前为止所做的:

double distance= Math.Sqrt(deltax + deltay);
Math.Round((decimal)distance, 3);
Console.WriteLine("Distance :" + distance);

使用Math.Round的返回值(已由注释)并删除十进制转换

double distance = Math.Sqrt(10.438295 + 10.4384534295);
Console.WriteLine("Distance :" + Math.Round(distance, 3));

使用Math.Round的返回值(已由注释)并删除十进制转换

double distance = Math.Sqrt(10.438295 + 10.4384534295);
Console.WriteLine("Distance :" + Math.Round(distance, 3));

不要使用
Math.round()
对其进行舍入,请在输出字符串格式化程序中对其进行舍入:

double distance = Math.Sqrt(deltax + deltay);
Console.WriteLine("Distance :{0:f3}", distance);
Console.WriteLine("{0:0.###}", x);
您几乎不想使用
Math.Round()
格式化输出

原因是,如果要将输出格式化为小数点后3位,通常需要显示尾随的零,以指示要显示的DPs数

例如,给定

double x = 0.1;
然后

将显示
0.1
,而

Console.WriteLine("{0:f3}", x);
将显示
0.100
,它会立即告诉用户它已四舍五入到3 dps

如果要从输出中删除尾随的零,则可以使用
Math.Round()
,但我会使用
##
字符串格式化程序:

double distance = Math.Sqrt(deltax + deltay);
Console.WriteLine("Distance :{0:f3}", distance);
Console.WriteLine("{0:0.###}", x);

这将输出
1.2345
1.235
1.0
1

不要使用
Math.round()
对其进行四舍五入,在输出字符串格式化程序中对其进行四舍五入:

double distance = Math.Sqrt(deltax + deltay);
Console.WriteLine("Distance :{0:f3}", distance);
Console.WriteLine("{0:0.###}", x);
您几乎不想使用
Math.Round()
格式化输出

原因是,如果要将输出格式化为小数点后3位,通常需要显示尾随的零,以指示要显示的DPs数

例如,给定

double x = 0.1;
然后

将显示
0.1
,而

Console.WriteLine("{0:f3}", x);
将显示
0.100
,它会立即告诉用户它已四舍五入到3 dps

如果要从输出中删除尾随的零,则可以使用
Math.Round()
,但我会使用
##
字符串格式化程序:

double distance = Math.Sqrt(deltax + deltay);
Console.WriteLine("Distance :{0:f3}", distance);
Console.WriteLine("{0:0.###}", x);

这将输出
1.2345
as
1.235
1.0
as
1

您是否忽略了第二行中的返回值?是否忽略了第二行中的返回值?或者
$“Distance:{Distance:f3}”
@UweKeim,但我想避免使用最新版本的Visual Studio。请注意,“Math.Round”对数字进行舍入,但如果是整数结果,则只会得到整数。对于“{0:f3}”,它将始终显示3位小数。(7 vs 7.000)@Odrai是的,这是首选字符串格式而不是
Math.Round()
的一个主要原因,正如我所说,您几乎不想使用
$“Distance:{Distance:f3}”
@UweKeim,但我想避免使用最新版本的Visual Studio。请注意,“Math.Round”对数字进行舍入,但如果是整数结果,则只会得到整数。对于“{0:f3}”,它将始终显示3位小数。(7 vs 7.000)@Odrai Yes,这是首选字符串格式而不是
Math.Round()
的一个主要原因,正如我所说,您几乎永远都不想将其用于格式化输出。