JavaScript Math.sin和Math.cos返回错误的值

JavaScript Math.sin和Math.cos返回错误的值,javascript,math,Javascript,Math,我正在开发一个简单的应用程序来帮助我的数学老师教授三角函数。这个应用程序只不过是一个圆,在这个圆中,角度不断旋转,并显示出正弦和余弦的变化。非常简单 这就是我到目前为止所做的: 这就是我想要实现的 (请注意代表cos的绿色部分) 一切都是通过CSS构建的。我需要计算绿色三角形的高度和宽度,这样我才能显示它,我认为这就像计算sin和cos并将其乘以200(我的圆半径为px)一样简单。 但由于某种原因,js给了我不准确的正反两个方面的值。 例如,如果我的角度为0(cos:1,sen:0),它会给

我正在开发一个简单的应用程序来帮助我的数学老师教授三角函数。这个应用程序只不过是一个圆,在这个圆中,角度不断旋转,并显示出正弦和余弦的变化。非常简单

这就是我到目前为止所做的:

这就是我想要实现的

(请注意代表cos的绿色部分)

一切都是通过CSS构建的。我需要计算绿色三角形的高度和宽度,这样我才能显示它,我认为这就像计算sin和cos并将其乘以200(我的圆半径为px)一样简单。 但由于某种原因,js给了我不准确的正反两个方面的值。 例如,如果我的角度为0(cos:1,sen:0),它会给出正确的值。但是如果我使用像90这样的角度,它将不会返回正确的值,如下面的屏幕截图所示:

这是我迄今为止的代码(为了可读性而减少)


对可能发生的事情有什么想法吗?

屏幕截图不可读,你能显示数字吗?三角形是如何渲染的?返回的无效高度和宽度值是什么?@Barmar到角度0(sin:0,cos:1)。角度90(sin:1,cos:6.123031769111886e-17)。这只是浮点不精确。参见
6.123031769111886e-17
非常接近
0
。有没有特别的原因让你偏离四舍五入,比如小数点后4位?
function trig()
{
    [...]
    this.radianMultiplier = Math.PI / 180;

    this.setDegree = function(degree)
    {
        [...]

        $('#h').html( Math.sin(degree * this.radianMultiplier) );
        $('#w').html( Math.cos(degree * this.radianMultiplier) );
    }
}