我正在尝试一些我认为应该相当简单的事情.我有一个角度,一个位置和一个距离,我想从这些信息中找到X,Y坐标.
使用90度的示例输入,我使用以下代码将值转换为弧度:
public double DegreeToRadian(float angle)
{
return Math.PI * angle / 180.0;
}
Run Code Online (Sandbox Code Playgroud)
这给了我1.5707963267949弧度然后当我使用
Math.Cos(radians)
Run Code Online (Sandbox Code Playgroud)
我最终得到了一个答案:6.12303176911189E-17
到底他妈发生了什么?90度的余弦应该是0,所以为什么我会得到这样的偏差...更重要的是我怎么能阻止它呢?
Dar*_*rov 14
让我用另一个回答你的问题:你认为6.12303176911189E-17从0开始有多远?您所谓的偏差实际上是由于浮点数在内部存储的方式.我建议你阅读以下文章.在.NET中,它们使用IEEE 754标准存储.
小智 7
你应该使用舍入
var radians = Math.PI * degres / 180.0;
var cos = Math.Round(Math.Cos(radians), 2);
var sin = Math.Round(Math.Sin(radians), 2);
Run Code Online (Sandbox Code Playgroud)
结果将是: sin: 1 cos: 0