【问题标题】:Sin and cos in JavaScript [duplicate]JavaScript中的正弦和余弦[重复]
【发布时间】:2015-05-23 21:03:26
【问题描述】:

我正在尝试用 JavaScript 构建一个计算器。除了 sin 和 cos 外,它都有效,它们会给出错误和意想不到的结果。

Sin 和 Cos 给出错误的结果

sin(180)=0

在代码中 sin(180)=-0.8011526357338304

我的代码如下图,

JavaScript:

function d(val){
    if(val=="sin"){
        var x=document.getElementById("d").value;
        document.getElementById("d").value=Math.sin(x);
    }
    if(val=="cos"){
        var x=document.getElementById("d").value;
        document.getElementById("d").value=Math.cos(x);
    }
    if(val=="envers"){
        var x=document.getElementById("d").value;
        document.getElementById("d").value=eval(1/x);
    }
    if(val=="sqrt"){
        var x=document.getElementById("d").value;
        document.getElementById("d").value=Math.sqrt(x);
    }
}

function c(val){
    document.getElementById("d").value=val;
}

function v(val){
    document.getElementById("d").value+=val;
}

function e(){ 
    try { 
      c(eval(document.getElementById("d").value)) 
    } 
    catch(e){
        c('Error') 
    } 
}

HTML:

<div class="display">
    <p>
        <input type="text" readonly size="14" id="d">
        <input type="button" class="button black" value="C" onclick='c("")'>  
    </p>
</div>
<div class="keys">
    <p>
        <input type="button" class="button black" value="1" onclick='v("1")'>
        <input type="button" class="button black" value="2" onclick='v("2")'>
        <input type="button" class="button black" value="3" onclick='v("3")'>
        <input type="button" class="button pink" value="+" onclick='v("+")'>
    </p>
    <p>
        <input type="button" class="button black" value="4" onclick='v("4")'>
        <input type="button" class="button black" value="5" onclick='v("5")'>
        <input type="button" class="button black" value="6" onclick='v("6")'>
        <input type="button" class="button pink" value="-" onclick='v("-")'>
    </p>
    <p>
        <input type="button" class="button black" value="7" onclick='v("7")'>
        <input type="button" class="button black" value="8" onclick='v("8")'>
        <input type="button" class="button black" value="9" onclick='v("9")'>
        <input type="button" class="button pink" value="*" onclick='v("*")'></p>

    <p>
        <input type="button" class="button black" value="." onclick='v(".")'>
        <input type="button" class="button black" value="0" onclick='v("0")'>
        <input type="button" class="button orange" value="=" onclick='e()'>
        <input type="button" class="button pink" value="/" onclick='v("/")'>
    </p>

    <p>
        <input type="button" class="button black" value="sin" onclick='d("sin")'>
        <input type="button" class="button black" value="cos" onclick='d("cos")'>
        <input type="button" class="button orange" value="1/x" onclick='d("envers")'>
        <input type="button" class="button pink" value="sqrt" onclick='d("sqrt")'>
    </p>
</div>

请告诉我如何求 sin 和 cos 的值

【问题讨论】:

  • 三角函数作用于以 弧度 为单位测量的角度,而不是度数。 180 度是 π 弧度,所以在调用函数之前将角度乘以 (π / 180)
  • 你可以为数字定义一个方便的toRad()方法as explained here
  • 我多次使用它,但它给出了错误的结果 if(val=="sin") { var x=document.getElementById("d").value; x=x*(数学.PI/180); document.getElementById("d").value=Math.sin(x); }
  • “错误结果”究竟是什么?
  • sin(180)=1.2246467991473532e-16

标签: javascript


【解决方案1】:

将您的角度乘以:(π / 180)

在哪里,π = Math.PI

函数在radians中运行,

因此,虽然您的意思是 180°,但该函数收到 180 radians

这是10,313.2403°

【讨论】:

    【解决方案2】:
    function d(val)
    {
    
    if(val=="sin")
    {
        var x=document.getElementById("d").value;
        x= x * Math.PI / 180;
        document.getElementById("d").value=Math.sin(x);
    }
    if(val=="cos")
    {
        var x=document.getElementById("d").value;
        x= x * Math.PI / 180;
        document.getElementById("d").value=Math.cos(x);
    }
    if(val=="envers")
    {
        var x=document.getElementById("d").value;
        document.getElementById("d").value=eval(1/x);
    }
    if(val=="sqrt")
    {
        var x=document.getElementById("d").value;
        document.getElementById("d").value=Math.sqrt(x);
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-16
      • 2013-04-05
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多