jquery - JavaScript浮点数间隙性的bug如何解决?
PHP中文网
PHP中文网 2017-04-10 16:31:06
0
5
338
   $(".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中文网

认证高级PHP讲师

全員に返信(5)
PHPzhong
$(".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
巴扎黑
$(".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
PHPzhong

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

いいねを押す +0
PHPzhong
  1. 不用js进行浮点运算

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

いいねを押す +0
伊谢尔伦

改成整数。。。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート