日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

html算术计算,js实现计算器 提供算术表达式求值

發(fā)布時(shí)間:2024/9/27 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html算术计算,js实现计算器 提供算术表达式求值 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

//html

計(jì)算器

@import "calculator.css";

//CSS

/* CSS Document */

body

{

/*?? padding-right:40%;

padding-left:40%;*/

text-align:center;

}

div{

background-color:orange;

height:300px;

width:300px;

margin-left:auto;

margin-right:auto;

margin-bottom:auto;

margin-top:50px;

border-style: groove;

border-color: Green;

/*?? ?margin-top:auto;*/

}

#in{

position:relative;

margin-left:20px;

margin-top:10px;

height:27px;

width:260px;

background:red;

top:40px

}

.clsin

{

height:27px;

width:200px;

background-color:#FFF;

}

#num{

position:relative;

margin-left:20px;

margin-top:45px;

height:150px;

width:250px;

background-color:green;

text-align:left;

}

#num input

{

margin-right:10px;

margin-top:10px;

width:35px;

}

//js

str_exp="";? //存放表達(dá)式

function test(obj)????? //數(shù)字 運(yùn)算符 btn?? click

{

str_exp+=obj.value;

document.getElementById("input").value=str_exp;

}

function compare( ch1, ch2)????????????????? //比較運(yùn)算符ch1和ch2優(yōu)先級

{

array1=new Array('+','-','*','/','(',')','@');

array20=new Array('>','>','', '>');

array21=new Array( '>','>','','>');

array22=new Array( '>','>','>','>','','>');

array23=new Array('>','>','>','>','','>');

array24=new Array('

array25=new Array('>','>','>','>',' ','>','>');

array26=new Array( '

array2=new Array(array20,array21,array22,array23,array24,array25,array26);

//?? b[7][7]={'>','>','','>',??? //? +

//?????????????? '>','>','','>',????? //? -

//?????????????? '>','>','>','>','','>',????? //? *

//??????????????? '>','>','>','>','','>',???? //? /

//??????????????? '

//???????????????? '>','>','>','>',' ','>','>',??? //? )

//???????????????? '

for(var i=0;ch1!=array1[i];i++);

for(var j=0;ch2!=array1[j];j++);

return array2[i][j];

}

function operate(a,preop,b)?? //計(jì)算a?b的值

{

//? var num1=parseInt(a,10);

//? var num2=parseInt(b,10);

var num1=parseFloat(a);

var num2=parseFloat(b);

//?? alert("a:"+num1+preop+"b:"+num2);

switch(preop)

{

case'+':return(num1+num2);break;

case'-':return(num1-num2);break;

case'*':return(num1*num2);break;

case'/':return(num1/num2);break;

//?? default: cout<

}

}

function isNum( ch)?????????????????????????????? //判斷讀取ch是否為操作數(shù)

{

if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='('||ch==')'||ch=='@')

return 0;

else

return 1;

}

function extend(str)?????? //將開始一定情況下‘-’轉(zhuǎn)換為'(0-1)*’,從而支持負(fù)數(shù)

{

var str1=new Array();

if(str.charAt(0)=='-')

{

str1+="(0-1)*";

}

else

{

str1+=str.charAt(0);

}

for(var i=1;i

{

if(str.charAt(i)=='-'&&str.charAt(i-1)=='(')

{

str1+="(0-1)*";

}

else

str1+=str.charAt(i);

}

return str1;

}

function divided(str)??? //分離表達(dá)式中操作數(shù)與操作符存放到返回值中

{

var str2=extend(str);

//? alert(str2);

var str_temp=new Array();

var j=0;

var expTemp;

var expPre;

for(var i=0;i

{

//? alert(str2.charAt(i));

expTemp="";

expTemp=str2.charAt(i);

if(i==0)

str_temp[0]=expTemp;

if(i>0)

{

expPre=str2.charAt(i-1); ///!!

if(isNum(expTemp)&&isNum(expPre))?? //判斷前后連續(xù)取到的是否都是數(shù)字字符,是則拼接

{

str_temp[j-1]+=expTemp;

j--;

}

else

{

str_temp[j]=expTemp;

}

}

j++;

}

return str_temp;

}

function exp_result()

{

str_exp=str_exp+'@';

str=divided(str_exp);

numArray=new Array();?? //存放操作數(shù)

symbolArray =new Array();//存放操作符

symbolArray.push('@');

//?? numArray.push('@');

//? alert(str.length);

for(var i=0;str[i]!='@'||symbolArray[symbolArray.length-1]!='@';i++)

{

//?????? alert(str[i]);

//?????? alert(symbolArray[symbolArray.length-1]);

if(isNum(str[i]))

{

//???????? alert("Num push:"+str[i]);

numArray.push(str[i]);

}

else

{

//?????? alert("symbol:"+str[i]);

preop=symbolArray[symbolArray.length-1];?? //取棧頂元素

switch(compare(preop,str[i]))

{

case'

case'=':symbolArray.pop();break;

case'>':b=numArray.pop();a=numArray.pop();preop=symbolArray.pop();? //取兩操作數(shù)與之前操作符運(yùn)算

numArray.push(operate(a,preop,b)); //計(jì)算結(jié)果入棧

// str.push(str[i]);? //當(dāng)前操作符入棧

i--;???? //繼續(xù)與之前的操作符比較

break;

}

}

}

if(isNaN(numArray[0]))

{

alert("算術(shù)表達(dá)式輸入有誤!!");

}

else

alert("結(jié)果為:"+numArray[0]);

str_exp="";

document.getElementById("input").value=str_exp;

}

總結(jié)

以上是生活随笔為你收集整理的html算术计算,js实现计算器 提供算术表达式求值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。