为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我输入1+2=12?

<!DOCTYPE html>

<html>

 <head>

  <title> 事件</title>  

  <script type="text/javascript">

   function count(){

        var result;

        //获取第一个输入框的值

        var x=document.getElementById("txt1").value;

    //获取第二个输入框的值

        var y=document.getElementById("txt2").value;

    //获取选择框的值

        var a=document.getElementById("select").value;

    //获取通过下拉框来选择的值来改变加减乘除的运算法则

        switch(a)

        {

            case"+":

                result=x+y;break;

            case"-":

                result=x-y;break;

            case"*":

                result=x*y;break;

            case"/":

                result=x/y;break;

        }

        document.getElementById("fruit").value=result;

    }

   

    //设置结果输入框的值 

    

 

  </script> 

 </head> 

 <body>

   <input type='text' id='txt1' /> 

   <select id='select'>

<option value='+'>+</option>

<option value="-">-</option>

<option value="*">*</option>

<option value="/">/</option>

   </select>

   <input type='text' id='txt2' /> 

   <input type='button' value=' = ' onclick="count()" /> <!--通过 = 按钮来调用创建的函数,得到结果--> 

   <input type='text' id='fruit' value="" />   

 </body>

</html>


正在回答

3 回答

//获取第一个输入框的值
var x=document.getElementById("txt1").value;
//获取第二个输入框的值
var y=document.getElementById("txt2").value;

改成如下

//获取第一个输入框的值
var x=document.getElementById("txt1").value-0;
//获取第二个输入框的值
var y=document.getElementById("txt2").value-0;

通过-0 可以将 x 或 y 转成数字

因为不知道输入的是整数还是小数,所以无法确定用 parseInt  还是 parseFloat 

程序算小数可能会出问题  比喻 0.6+0.3  = 0.8999999999999999,所以出现小数时最好把小数转成整数来计算 比喻 (0.6*10+0.3*10)/10 = 0.9 

1 回复 有任何疑惑可以回复我~
#1

godhypnos

我试验了几个小数运算,结果好奇怪啊~~!是不是JS就不适合小数运算呢?PS:我把变量类型定义为浮点形式,结果也很奇怪.....
2015-11-21 回复 有任何疑惑可以回复我~
#2

李晓健 回复 godhypnos

这个不是js的问题,是所有编程语言的问题
2015-11-21 回复 有任何疑惑可以回复我~

对啊,你的1+2他就解析成了 “1”+“2”=“12”

0 回复 有任何疑惑可以回复我~

+号在JS中还有一个功能是字符串拼接,所以你在操作x,y 时,一定要先把x,y转成数字类型的,用x = parseInt(x);后再试试

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我输入1+2=12?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信