用Javascript编写的科学计算器Word文档格式.docx
《用Javascript编写的科学计算器Word文档格式.docx》由会员分享,可在线阅读,更多相关《用Javascript编写的科学计算器Word文档格式.docx(30页珍藏版)》请在冰点文库上搜索。
#313596;
FONT-SIZE:
12px;
BORDER-TOP:
BORDER-RIGHT:
#b2b2b21pxsolid
}
.b2{
#fe3498;
.b3{
61px;
#ff6501;
.b4{
32px;
#888485;
.border{
#b1bac31pxsolid;
#b1bac31pxsolid
.dh{
40px;
#868485;
.or{
#fe6700;
.xn{
#313398;
.xo{
#ff6701;
/STYLE>
SCRIPTlanguage=javascript>
--
varendNumber=true
varmem=0
varcarry=10
varhexnum="
0123456789abcdef"
varangle="
d"
varstack="
"
varlevel="
0"
varlayer=0
//数字键
functioninputkey(key)
{
varindex=key.charCodeAt(0);
if((carry==2&
&
(index==48||index==49))
||(carry==8&
index>
=48&
index<
=55)
||(carry==10&
(index>
=57||index==46))
||(carry==16&
((index>
=57)||(index>
=97&
=102))))
if(endNumber)
{
endNumber=false
document.calc.display.value=key
}
elseif(document.calc.display.value==null||document.calc.display.value=="
)
else
document.calc.display.value+=key
functionchangeSign()
if(document.calc.display.value!
="
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
//函数键
functioninputfunction(fun,shiftfun)
endNumber=true
if(document.calc.shiftf.checked)
document.calc.display.value=decto(funcalc(shiftfun,(todec(document.calc.display.value,carry))),carry)
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()
functioninputtrig(trig,arctrig,hyp,archyp)
if(document.calc.hypf.checked)
inputfunction(hyp,archyp)
inputfunction(trig,arctrig)
//运算符
functionoperation(join,newlevel)
vartemp=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
//括号
functionaddbracket()
document.calc.display.value=0
stack=stack+"
level=level+0
layer+=1
document.calc.bracket.value="
(="
+layer
functiondisbracket()
while((level.charAt(level.length-1))>
0)
document.calc.display.value=temp
))
level=level.slice(0,-1)
layer-=1
if(layer>
document.calc.bracket.value="
//等号
functionresult()
while(layer>
disbracket()
vartemp=stack+document.calc.display.value
stack="
level="
//修改键
functionbackspace()
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)
document.calc.display.value=0
functionclearall()
layer="
//转换键
functioninputChangCarry(newcarry)
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!
document.calc.tan.disabled=(carry!
document.calc.bt.disabled=(carry!
document.calc.pi.disabled=(carry!
document.calc.e.disabled=(carry!
document.calc.kp.disabled=(carry!
document.calc.k2.disabled=(carry<
=2)
document.calc.k3.disabled=(carry<
document.calc.k4.disabled=(carry<
document.calc.k5.disabled=(carry<
document.calc.k6.disabled=(carry<
document.calc.k7.disabled=(carry<
document.calc.k8.disabled=(carry<
=8)
document.calc.k9.disabled=(carry<
document.calc.ka.disabled=(carry<
document.calc.kb.disabled=(carry<
document.calc.kc.disabled=(carry<
document.calc.kd.disabled=(carry<
document.calc.ke.disabled=(carry<
document.calc.kf.disabled=(carry<
functioninputChangAngle(angletype)
angle=angletype
if(angle=="
document.calc.display.value=radiansToDegress(document.calc.display.value)
document.calc.display.value=degressToRadians(document.calc.display.value)
functioninputshift()
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"
}
asin"
acos"
atan"
document.calc.sqr.value="
x^.5"
document.calc.cube.value="
x^.3"
document.calc.floor.value="
小数"
d.ms"
ln"
log"
hsin"
hcos"
htan"
sin"
cos"
tan"
x^2"
x^3"
取整"
//存储器部分
functionclearmemory()
mem=0
document.calc.memory.value="
functiongetmemory()
document.calc.display.value=decto(mem,carry)
functionputmemory()
=0)
mem=todec(document.calc.display.value,carry)
document.calc.memory.value="
M"
functionaddmemory()
mem=parseFloat(mem)+parseFloat(todec(document.calc.display.value,carry))
if(mem==0)
functionmultimemory()
mem=parseFloat(mem)*parseFloat(todec(document.calc.display.value,carry))
//十进制转换
functiontodec(num,oldcarry)
if(oldcarry==10||num==0)return(num)
varneg=(num.charAt(0)=="
if(neg)num=num.substr
(1)
varnewnum=0
for(varindex=1;
index<
=num.length;
index++)
newnum=newnum*oldcarry+hexnum.indexOf(num.charAt(index-1))
if(neg)
newnum=-newnum
return(newnum)
functiondecto(num,newcarry)
varneg=(num<
if(newcarry==10||num==0)return(num)
num="
+Math.abs(num)
varnewnum="
while(num!
newnum=hexnum.charAt(num%newcarry)+newnum
num=Math.floor(num/newcarry)
newnum="
+newnum
//表达式解析
functionparse(string)
if(string.match(/^(.*\d[\+\-\*\/\%\^\&
\|x\<
])?
[0-9a-f\.]+)([\+\-\*\/\%\^\&
])([+-]?
return(RegExp.$1+cypher(RegExp.$2,RegExp.$3,RegExp.$4))
return(string)
//数学运算和位运算
functioncypher(left,join,righ