function getResult(str){
// var _str=str.repalce('*','×');
// var __str=_str.replace('/','÷');
var str1=str.split('');
var str2=[];
for(var i=0;i<str1.length;i++)
{
if(!Number(str1[i])&&str1[i]!='.'&&str1[i]!='0')
{
str2.push('|',str1[i],'|');
}
else
{
str2.push(str1[i]);
}
}
// alert(str12);
var arr=str2.join('').split('|');
// alert(arr);
var ops='+-#×÷'.split('');
var result=[];
var temp=[];
arr.forEach(function(ele,ind){
if(ele=='(')
{
temp.push(ele);
}
else if(ele==')')
{
var flag=true;
while(flag)
{
if(temp[temp.length-1]!='(')
{
result.push(temp.pop());
}
else
{
temp.pop();
flag=false;
}
}
}
else if(ops.indexOf(ele)!=-1)
{
cmp(ele,temp);
function cmp(x,t){
if(t.length==0||t[t.length-1]=='('||
(ops.indexOf(x)-ops.indexOf(t[t.length-1]))>2)
{
t.push(x);
}
else
{
result.push(t.pop());
return cmp(x,t);
}
}
}
else
{
result.push(ele);
}
})
while(temp.length>0)
{
if(temp[temp.length-1]!='('){
result.push(temp.pop());
}
else
{
temp.pop();
}
}
// alert(result);
var res=result;
result=[];
res.forEach(function(ele,ind){
if(ele!='')
result.push(ele);
})
// alert(result);
var s=[];
// alert(s);
result.forEach(function(ele,ind){
var reg=/^\d+(\.\d+)?$/;
if(reg.test(ele))
{
s.push(ele);
}
else
{
var ans;
var a=parseFloat(s.pop());
var b=parseFloat(s.pop());
if(ele=='+')
ans=a+b;
if(ele=='-')
ans=b-a;
if(ele=='×')
ans=a*b;
if(ele=='÷')
ans=b/a;
s.push(ans);
}
})
// alert(s);
return s[0];
}
转载自原文链接, 如需删除请联系管理员。
原文链接:js加减乘除混合运算,转载请注明来源!