2015-12-13 279 views
-2

根据我的理解,我的计算器cos(90 degrees)等于0
在我的代码,我有一个功能,可以让我在,每当我需要键入度:Math.cos()给出错误结果

function deg(i) 
{ 
    return i*Math.PI/180; 
} 

虽然,呼吁​​当我收到输出为6.123233995736766e-17

为什么会发生这样的事情?

(请原谅我的英语不好)

+5

[浮点运算是否被破坏?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – adeneo

+3

['每个计算机科学家应该知道的关于浮点算术' ](https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) –

+0

@adeneo谢谢,真的是这样,我如何标记我的帖子是重复的? –

回答

3

deg(90)大约等于90*Math.PI/180的检查结果是aproximately等于0

所以,一切都很好;)

注意,它必须是近似的,因为没有办法来表示π精确。

+1

稍微超过'6'并不是真的大约等于零? – adeneo

+2

@ adeneo,“略高于6”? '6.123233995736766e-17'离6非常远。那是'6 * 10^-17'。 –

+0

@DarinDimitrov - 至少可以对科学记数法做一点解释? – adeneo