javascript-JS问题 帮我看看小数点怎么才能正常运算 我的有点问题 不能连续进行小数点运算

问题描述

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

javascript-JS问题 帮我看看小数点怎么才能正常运算 我的有点问题 不能连续进行小数点运算的相关文章

javascript(js)的小数点乘法除法问题详解

 本篇文章主要是对javascript(js)中的小数点乘法除法问题进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 一.用js计算 12.32 * 7  结果是多少?答案:86.24000000000001   为什么会出现这种问题?怎么解决? js在处理小数的乘除法的时候有一个bug,解决的方法可以是:将小数变为整数来处理. 以上的计算可以改为: 12.32 * 100 * 7 /100 得出的结果是:86.24,正确.   另外再计算一下: 8.80 * 100 * 12 /

js动态获得滚动条宽度 JavaScript,js

javascript|js|动态 我现在有一个层,层中有一个div,当内容比较多的时候就出现滚动条,我现在想,当滚动条出现的时候,div中表格的宽度等于div的宽度减去滚动条的宽度,如何才能去动态获得滚动条的宽度,或者判断滚动条的状态既是否出现.------------------------------------------------------------------------------------ 是不是想这样?<div id="demo" style="

来会javascript大神帮帮忙..........

问题描述 来会javascript大神帮帮忙.......... 4C 换段代码可以达到一模一样的效果吗 老大不给我 照抄name是这些鬼这个方法里调用marquee函数 解决方案 pos哪里定义的?你的html代码结构呢,如何调用那个函数的也没有 解决方案二: 不就是一个里面放着对象的数组吗? 解决方案三: 可以把你html贴出来,完整的代码

javascript-求教js当中的监听事件的问题,查了半天,也没有个所以然来,js高手帮帮忙啊

问题描述 求教js当中的监听事件的问题,查了半天,也没有个所以然来,js高手帮帮忙啊 有一个项目,有一个公共的界面,也就是无论做什么操作都会存在一个按钮,我就想在页面未登陆的的时候把按钮隐藏,该怎么做呢??要考虑登录超时跳转登录界面依然能让他隐藏 解决方案 默认隐藏,访问页面的时候自己从session什么的判断是否登录,登录了将信息赋值给一个js变量,然后显示按钮 <input type="button" style="display:none" value=

javascript/JS常用正则表达式

javascript/JS限制用户名只能输入字母和数字下划线 function checkreg(){         var msg = "对不起,输入错误\n";         var regform = document.all.reg;         var username = regform.username;         var password1 = regform.password1;         var password2 = regform.passw

javascript (js)判断手机号码中国移动、中国联通、中国电信

原文:javascript (js)判断手机号码中国移动.中国联通.中国电信 我国使用的手机号码为11位,其中各段有不同的编码方向:前3位---网络识别号:第4-7位---地区编码:第8-11位---用户号码. 中国移动134.135.136.137.138.139.150.151.152.157.158.159.147.182.183.184.187.188.178(4G) 中国联通130.131.132.155.156.185.186.145(属于联通无线上网卡号段).176 (4G) 中国

javascript js 操作数组 增删改查的简单实现_javascript技巧

函数定义 Array.prototype.indexOf = function(val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return i; } return -1; }; Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }

javascript(js)的小数点乘法除法问题详解_javascript技巧

一.用js计算12.32 * 7  结果是多少?答案:86.24000000000001 为什么会出现这种问题?怎么解决?js在处理小数的乘除法的时候有一个bug,解决的方法可以是:将小数变为整数来处理.以上的计算可以改为:12.32 * 100 * 7 /100得出的结果是:86.24,正确. 另外再计算一下:8.80 * 100 * 12 / 100结果:105.6000000000000238.80也会出现类似的问题. 精确度增加10倍:8.80 * 1000 * 12 / 1000结果:

js浮点数保留两位小数点示例代码(四舍五入)_javascript技巧

复制代码 代码如下: var changeTwoDecimal_f= function (floatvar){      var f_x = parseFloat(floatvar);      if (isNaN(f_x)){          return '0.00';      }      var f_x = Math.round(f_x*100)/100;      var s_x = f_x.toString();      var pos_decimal = s_x.indexO