搜索

首页  >  问答  >  正文

jquery - JavaScript浮点数间隙性的bug如何解决?

   $(".editor-number__plus").click(function() {
            var n = (Math.round(parseFloat($(this).siblings("input").val())*10)/10)
            n = n + 0.1
            $(this).siblings("input").val(n)
            
          })
      
      
      

初始值为10,使用以上代码点击按钮打印或显示出来的数值是:
10.1
10.2
10.299999999999999
10.4
10.5
10.6
10.7
10.799999999999999
10.9
11
11.1
11.2
11.299999999999999
11.4
11.5
11.6
11.7
11.799999999999999
11.9
12
12.1
12.2
12.299999999999999
12.4
12.5
12.6
12.7
12.799999999999999

请教该如何解决?

PHP中文网PHP中文网2818 天前331

全部回复(5)我来回复

  • PHPz

    PHPz2017-04-10 16:33:06

    $(".editor-number__plus").click(function() {
        var n = Math.round(parseFloat($(this).siblings("input").val())*10)
        var m = n + 1
        $(this).siblings("input").val(m/10)
    })

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-10 16:33:06

    $(".editor-number__plus").click(function() {
        var n = (Math.round(parseFloat($(this).siblings("input").val())*10)/10);
        n = n + 0.1;
        $(this).siblings("input").val(n.toFixed(1));
        })  

    OR

    $(".editor-number__plus").click(function() {
        var n = (Math.round(parseFloat($(this).siblings("input").val())*10));
        n = (n+1)/10;
        $(this).siblings("input").val(n)
        })      

    回复
    0
  • PHPz

    PHPz2017-04-10 16:33:06

    请参考MDN Math.round的十进制调整章节

    回复
    0
  • PHPz

    PHPz2017-04-10 16:33:06

    1. 不用js进行浮点运算

    2. 必须要用js做的,转成整数,运算结束后再转浮点

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 16:33:06

    改成整数。。。

    回复
    0
  • 取消回复