我在尝试一些我认为应该相当简单的事情。我有一个角度,一个位置和一个距离,我想从这些信息中找到X,Y坐标。Math.Cos&Math.Sin in C#
具有90度的示例输入I的值转换为弧度用下面的代码:
public double DegreeToRadian(float angle)
{
return Math.PI * angle/180.0;
}
这使我1.5707963267949弧度 然后,当我使用
Math.Cos(radians)
我结束了答案是:6.12303176911189E-17
这是怎么回事? 90度的余弦应该是0,那么为什么我会得到这样的偏差...更重要的是我该如何阻止它呢?
绝对舍入为0.当您将该值转换为字符串时,请使用格式说明符,以便用户按照预期的方式看到它。 – 2011-05-21 15:19:31
好吧,我认为精度的缺乏是由于浮点类型的精度不足造成的,但Windows Calculator如何设法让答案死灰复燃,它只是欺骗并使用查找表? – elaverick 2011-05-21 15:45:02
@elaverick - 谁说Windows计算器正在使用.Net双打(不是)或任何浮点类型(它不是)。谁说它会输出精确的计算结果而不是运用理智的舍入规则? – 2011-05-21 15:48:58