【发布时间】:2020-05-22 21:08:51
【问题描述】:
我有一种将度数转换为弧度的方法...
public static double ToRadians(double degAngle)
{
return Math.PI * degAngle / 180;
}
...而且效果很好。
但是当我尝试
Math.Cos(ToRadians(90));,它返回 6.12303176911189E-17。为什么会这样?
【问题讨论】:
-
你注意到
E-17了吗?那是因为四舍五入。浮点数没有无限精度。 -
期望值是多少?它有多远?它是否在预期的浮点不精度范围内? youtube.com/watch?v=PZRI1IfStY0
-
cos(90 degrees)的期望值为0(余弦是单位圆的 X 分量,在九十度处为零)。您得到的答案是由于浮点精度错误。 6E-17 非常接近于零。 -
这是基于documentation 的预期结果,同样的事情发生在other language。我假设您永远不能将 90 度传递给该方法,因为它需要以弧度作为参数非常精确。
标签: c# .net math trigonometry