四则运算算法求助
来源:3-1 四则运算的实现
Win_D
2019-08-29 17:13:53
我按照自己对计算器的理解改了下代码,使得计算器可以在3+3+3=9这种情况可以计算,而不用进行3+3=6+3=9的操作,但是出现了问题。例如现在8*8/2=0.5,这算法要怎么优化?
function init() {
var num=document.getElementById("num");
num.value = 0;
num.disabled="disabled";
var oButton=document.getElementsByTagName("input");
var btn_num1 = 0;
var fh;
for (var i = 0;i < oButton.length;i++){
oButton[i].onclick = function () {
if (isNumber(this.value)){
// num.value = (num.value + this.value)*1;
if (isNull(num.value)) {
num.value = this.value;
}else {
num.value = (num.value + this.value)*1;
}
} else {
var btn_num = this.value;
// var btn_num1 = 0;
switch (btn_num) {
case "+":
btn_num1 = parseInt(num.value) + btn_num1;
num.value = 0;
fh = "+";
break;
case "-":
btn_num1 = parseInt(num.value) - btn_num1;
num.value = 0;
fh = "-";
break;
case "*":
if (btn_num1 == 0) {
btn_num1 = parseInt(num.value)
}else {
btn_num1 = btn_num1*parseInt(num.value);
}
num.value = 0;
fh = "*";
break;
case "/":
if (num.value == 0) {
alert("除数不能为0");
num.value =0;
}else {
if (btn_num1 == 0) {
btn_num1 = parseInt(num.value)
}else {
btn_num1 = btn_num1/parseInt(num.value);
}
}
num.value = 0;
fh = "/";
break;
case "=":
switch (fh) {
case "+":
num.value=btn_num1+parseInt(num.value);
break;
case "-":
num.value=btn_num1-parseInt(num.value);
break;
case "*":
num.value=btn_num1*parseInt(num.value);
break;
case "/":
num.value=btn_num1/parseInt(num.value);
break;
}
break;
case ".":
alert("111");
break;
case "←":
alert("111");
break;
case "+/-":
alert("111");
break;
case "C":
num.value = 0;
btn_num1 = 0;
break;
case "m":
alert("111");
break;
}
// alert()
}
}
}
}
// 验证文本框是否为空或者0 * /
function isNull(n) {
return n === "0" || n.length === 0;
}
// 判断字符串是不是数字
function isNumber(n) {
return !isNaN(n);
}
1回答
余生______
2019-08-29
你可以参考https://www.jb51.net/article/124685.htm 这个博客里的方法写一下
相似问题