问题描述
- JS问题 帮我看看小数点怎么才能正常运算 我的有点问题 不能连续进行小数点运算
-
<html> <head> <title>JiSuanQi</title> <!-- 移动层外部JS文件 --> <script src="src/js/yidong.js"></script> <link rel="stylesheet" href="src/css/jsq.css"> <script> var oper = "" var isClickOper = false//是否点击了运算符 var num = 0; var isClickPoint = false;//是否点击了小数点 //输入数字 function addNum(n){ var nowNum = myform.num.value; if(nowNum == "0"||isClickOper){//直接赋值 myform.num.value = n; isClickOper = false; }else if(myform.num.value.length<9){//限制文本框按键输入数字长度最多9个 //myform.num.value = myform.num.value + n;//连接赋值 myform.num.value += n //也可以这样写连接赋值 } } //添加运算符 function setOper(op){ oper = op; num = myform.num.value*1; isClickOper = true; } //得到结果 function getCount(){ if(oper != ""){ if(oper == "+"){ num = num + myform.num.value*1; }else if(oper == "-"){ num = num - myform.num.value*1; }else if(oper == "*"){ num = num * myform.num.value*1 }else if(oper == "/"){ if(myform.num.value == 0){ num ="除数不能为0"}else{ num = num / myform.num.value*1 } }else if(oper == "%"){ num = num % myform.num.value*1 } myform.num.value = num; } } //添加小数点 function addPoint(){ if(!isClickPoint){//判断是否点击过小数点 myform.num.value += "."; isClickPoint = true; } } //清楚 function cc(){ myform.num.value = "0"; isClickOper = false; isClickPoint = false; num = 0; oper="0"; } //删除 function del(){ var nowNum = myform.num.value; if(nowNum.length==1){ myform.num.value = "0"; }else{ myform.num.value = nowNum.substr(0,nowNum.length-1) } } </script> <!--鼠标进入、默认、按下、放开样式--> <style> #ceng{width:440px;height:500px;background:#141414;} .jr{background-Image:url('src/img/jr.png')} .mr{background-Image:url('src/img/mr.png')} .ax{background-Image:url('src/img/ax.png')} .fk{background-Image:url('src/img/fk.png')} table{position:relative;top:30px;} #daceng{background-image:url('src/img/1.jpg')} </style> </head> <body bgcolor="green"> <center> <form id="myform"> <div onmousemove="mouseMove()" id="daceng" style="width:100%;height:800px"> <div onmousedown="mouseDown()" onmouseup="mouseUp()" id="ceng" style="top:80px;left:300px;position:absolute;"><font size="7" color="#99ff99">简易计算器</font> <table border="1" width="422px" height="360px" align="center"> <tr> <td colspan="4"> <input id="num" type="text" onfocus="blur()" value="0"/> </td> </tr> <tr> <td> <input id="bt1" type="button" value="1" onclick="addNum(1)"/> </td> <td> <input id="bt2" type="button" value="2" onclick="addNum(2)"/> </td> <td> <input id="bt3" type="button" value="3" onclick="addNum(3)"/> </td> <td> <input id="bt10" type="button" value="+" onclick="setOper('+')"/> </td> </tr> <tr> <td> <input id="bt4" type="button" value="4" onclick="addNum(4)"/> </td> <td> <input id="bt5" type="button" value="5" onclick="addNum(5)"/> </td> <td> <input id="bt6" type="button" value="6" onclick="addNum(6)"/> </td> <td> <input id="bt11" type="button" value="-" onclick="setOper('-')"/> </td> </tr> <tr> <td> <input id="bt7" type="button" value="7" onclick="addNum(7)"/> </td> <td> <input id="bt8" type="button" value="8" onclick="addNum(8)"/> </td> <td> <input id="bt9" type="button" value="9" onclick="addNum(9)"/> </td> <td> <input id="bt12" type="button" value="*" onclick="setOper('*')"/> </td> </tr> <tr> <td> <input id="bt0" type="button" value="0" onclick="addNum(0)"/> </td> <td> <input id="bt13" type="button" value="." onclick="addPoint()"/> </td> <td> <input id="bt14" type="button" value="%" onclick="setOper('%')"/> </td> <td> <input id="bt15" type="button" value="/" onclick="setOper('/')"/> </td> </tr> <tr> <td> <input id="bt16" type="button" value="C" onclick="cc()"/> </td> <td> <input id="bt17" type="button" value="←" onclick="del()"/> </td> <td colspan="2"> <input id="bt18" type="button" value="=" onclick="getCount()"/> </td> </tr> </table> </div> </div> </form> </center> <!-- 打开关闭计算器 --> <input type="button" value="打开计算器"style="font-size:20px;color:black;background:lime" onclick="ceng.style.display='block'"> <input type="button" style="font-size:20px;color:black;background:lime" value="关闭计算器" onclick="ceng.style.display='none'"> </body> <script src="src/js/jsq.js"></script>
解决方案
解决方法:参考过之后觉得最靠谱的是,先将小数转换为字符串,然后将小数部分移位化整,运算后再重新移位转换为小数
解决方案二:
在删除和点击运算符的时候清除小数点点击的标记位。
解决方案三:
将真实的运算结果和显示的运算结果分别保存到两个不同的变量中,对运算结果变量作精度处理
时间: 2024-12-23 07:46:02