<html>
<head>
</head>
<body>
<script language="javascript">
str="5*8/3*6/10";
ss1=str.split(/\+|\-|\*|\//);
ss2=str.split(/0|1|2|3|4|5|6|7|8|9/);
//строка, числовой массив и массив действий
//------функции---
function clear(){
ss4=[];
ss3=[];
j=0;
for(i=0;i<ss1.length;i++){
if(ss1[i]!=""){
ss4[j++]=ss1[i];
}}
ss1=ss4;
j=0;
for(i=0;i<ss2.length;i++){
if(ss2[i]!=""){
ss3[j++]=ss2[i];
}}
ss2=ss3;}
//-----------чистка массивов------------
clear();
//-----------делим---------------------------
for(i=0;i<ss2.length;i++){
if(ss2[i]=="/"){
ss1[i]=ss1[i]/ss1[i+1];
ss1[i]=Math.round(ss1[i]*100000)/100000;
ss1[i+1]='';
ss2[i]='';
clear();
i=0;
alert("Строка: "+str+"\nМассив числел: "+ss1+"\nМассив дейсивий: "+ss2+"\n");
}}
for(i=0;i<ss2.length;i++){
if(ss2[i]=="/"){
ss1[i]=ss1[i]/ss1[i+1];
ss1[i]=Math.round(ss1[i]*100000)/100000;
ss1[i+1]='';
ss2[i]='';
clear();
i=0;
alert("Строка: "+str+"\nМассив числел: "+ss1+"\nМассив дейсивий: "+ss2+"\n");
}}
//--------------------------------------
for(i=0;i<ss2.length;i++){
if(ss2[i]=="*"){
ss1[i]=ss1[i]*ss1[i+1];
ss1[i+1]='';
ss2[i]='';
clear();
i=0;
alert("Строка: "+str+"\nМассив числел: "+ss1+"\nМассив дейсивий: "+ss2+"\n");
}}
for(i=0;i<ss2.length;i++){
if(ss2[i]=="*"){
ss1[i]=ss1[i]*ss1[i+1];
ss1[i+1]='';
ss2[i]='';
clear();
i=0;
alert("Строка: "+str+"\nМассив числел: "+ss1+"\nМассив дейсивий: "+ss2+"\n");
}}
document.getElementsByTagName("body")[0].innerHTML=document.getElementsByTagName("body")[0].innerHTML+"Строка: "+str+"<br>Массив числел: "+ss1+"<br>Массив дейсивий: "+ss2+"<br>";
</script>
</body>
</html>
это калькулятор (часть кода убрал, оставил * и /), смысл в том, что он разбирает готовую строку (str) на подстроки чисел и действий, и считает. проблема при .../3*6... при этом всплывают погрешности, пытался убрать округлив, не получилось, конечно лучше сначала умножать, потом делить, но это намного сложнее, так как скрипт умножает соседние числа и получится .../18... что делать? как убрать погрешности?
пс. циклы дважды поставил, потому, что последнее действие не выполнялось, долго искал ошибку, не нашёл и оставил так покашто.