科学计算器源代码(1)

  • 来源: 天新网 作者: 若水   2008-05-08/07:29
  • 科学计算器(1)

    <SCRIPT language=JavaScript>
    <!--
    var endNumber=true
    var mem=0
    var carry=10
    var hexnum="0123456789abcdef"
    var angle="d"
    var stack=""
    var level="0"
    var layer=0


    //数字键

    function inputkey(key)
    {
    var index=key.charCodeAt(0);
    if ((carry==2 && (index==48 || index==49))
    || (carry==8 && index>=48 && index<=55)
    || (carry==10 && (index>=48 && index<=57 || index==46))
    || (carry==16 && ((index>=48 && index<=57) || (index>=97 && index<=102))))
    if(endNumber)
    {
    endNumber=false
    document.calc.display.value = key
    }
    else if(document.calc.display.value == null || document.calc.display.value == "0")
    document.calc.display.value = key
    else
    document.calc.display.value += key
    }

    function changeSign()
    {
    if (document.calc.display.value!="0")
    if(document.calc.display.value.substr(0,1) == "-")
    document.calc.display.value = document.calc.display.value.substr(1)
    else
    document.calc.display.value = "-" + document.calc.display.value
    }

    //函数键

    function inputfunction(fun,shiftfun)
    {
    endNumber=true
    if (document.calc.shiftf.checked)
    document.calc.display.value=decto(funcalc(shiftfun,(todec(document.calc.display.value,carry))),carry)
    else
    document.calc.display.value=decto(funcalc(fun,(todec(document.calc.display.value,carry))),carry)
    document.calc.shiftf.checked=false
    document.calc.hypf.checked=false
    inputshift()
    }

    function inputtrig(trig,arctrig,hyp,archyp)
    {
    if (document.calc.hypf.checked)
    inputfunction(hyp,archyp)
    else
    inputfunction(trig,arctrig)
    }


    //运算符

    function operation(join,newlevel)
    {
    endNumber=true
    var temp=stack.substr(stack.lastIndexOf("(")+1)+document.calc.display.value
    while (newlevel!=0 && (newlevel<=(level.charAt(level.length-1))))
    {
    temp=parse(temp)
    level=level.slice(0,-1)
    }
    if (temp.match(/^(.*\d[\+\-\*\/\%\^\&\|x])?([+-]?[0-9a-f\.]+)$/))
    document.calc.display.value=RegExp.$2
    stack=stack.substr(0,stack.lastIndexOf("(")+1)+temp+join
    document.calc.operator.value=" "+join+" "
    level=level+newlevel

    }

    //括号

    function addbracket()
    {
    endNumber=true
    document.calc.display.value=0
    stack=stack+"("
    document.calc.operator.value=" "
    level=level+0

    layer+=1
    document.calc.bracket.value="(="+layer
    }

    function disbracket()
    {
    endNumber=true
    var temp=stack.substr(stack.lastIndexOf("(")+1)+document.calc.display.value
    while ((level.charAt(level.length-1))>0)
    {
    temp=parse(temp)
    level=level.slice(0,-1)
    }

    document.calc.display.value=temp
    stack=stack.substr(0,stack.lastIndexOf("("))
    document.calc.operator.value=" "
    level=level.slice(0,-1)

    layer-=1
    if (layer>0)
    document.calc.bracket.value="(="+layer
    else
    document.calc.bracket.value=""
    }

    //等号

    function result()
    {
    endNumber=true
    while (layer>0)
    disbracket()
    var temp=stack+document.calc.display.value
    while ((level.charAt(level.length-1))>0)
    {
    temp=parse(temp)
    level=level.slice(0,-1)
    }

    document.calc.display.value=temp
    document.calc.bracket.value=""
    document.calc.operator.value=""
    stack=""
    level="0"
    }


    //修改键

    function backspace()
    {
    if (!endNumber)
    {
    if(document.calc.display.value.length>1)
    document.calc.display.value=document.calc.display.value.substring(0,document.calc.display.value.length - 1)
    else
    document.calc.display.value=0
    }
    }

    function clearall()
    {
    document.calc.display.value=0
    endNumber=true
    stack=""
    level="0"
    layer=""
    document.calc.operator.value=""
    document.calc.bracket.value=""
    }


    //转换键

    function inputChangCarry(newcarry)
    {
    endNumber=true
    document.calc.display.value=(decto(todec(document.calc.display.value,carry),newcarry))
    carry=newcarry

    document.calc.sin.disabled=(carry!=10)
    document.calc.cos.disabled=(carry!=10)
    document.calc.tan.disabled=(carry!=10)
    document.calc.bt.disabled=(carry!=10)
    document.calc.pi.disabled=(carry!=10) #p#分页标题#e#
    document.calc.e.disabled=(carry!=10)
    document.calc.kp.disabled=(carry!=10)

    document.calc.k2.disabled=(carry<=2)
    document.calc.k3.disabled=(carry<=2)
    document.calc.k4.disabled=(carry<=2)
    document.calc.k5.disabled=(carry<=2)
    document.calc.k6.disabled=(carry<=2)
    document.calc.k7.disabled=(carry<=2)
    document.calc.k8.disabled=(carry<=8)
    document.calc.k9.disabled=(carry<=8)
    document.calc.ka.disabled=(carry<=10)
    document.calc.kb.disabled=(carry<=10)
    document.calc.kc.disabled=(carry<=10)
    document.calc.kd.disabled=(carry<=10)
    document.calc.ke.disabled=(carry<=10)
    document.calc.kf.disabled=(carry<=10)



    }

    function inputChangAngle(angletype)
    {
    endNumber=true
    angle=angletype
    if (angle=="d")
    document.calc.display.value=radiansToDegress(document.calc.display.value)
    else
    document.calc.display.value=degressToRadians(document.calc.display.value)
    endNumber=true
    }

    function inputshift()
    {
    if (document.calc.shiftf.checked)
    {
    document.calc.bt.value="deg "
    document.calc.ln.value="exp "
    document.calc.log.value="expd"

    if (document.calc.hypf.checked)
    {
    document.calc.sin.value="ahs "
    document.calc.cos.value="ahc "
    document.calc.tan.value="aht "
    }
    else
    {
    document.calc.sin.value="asin"
    document.calc.cos.value="acos"
    document.calc.tan.value="atan"
    }

    document.calc.sqr.value="x^.5"
    document.calc.cube.value="x^.3"

    document.calc.floor.value="小数"
    }
    else
    {
    document.calc.bt.value="d.ms"
    document.calc.ln.value=" ln "
    document.calc.log.value="log "

    if (document.calc.hypf.checked)
    {
    document.calc.sin.value="hsin"
    document.calc.cos.value="hcos"
    document.calc.tan.value="htan"
    }
    else
    {
    document.calc.sin.value="sin "
    document.calc.cos.value="cos "
    document.calc.tan.value="tan "
    }

    document.calc.sqr.value="x^2 "
    document.calc.cube.value="x^3 "

    document.calc.floor.value="取整"
    }

    }

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多