搜索
jquery - JavaScript浮点数间隙性的bug如何解决?
PHP中文网
PHP中文网 2017-04-10 16:31:06
[JavaScript讨论组]
   $(".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)
PHPz
$(".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)
})
巴扎黑
$(".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)
    })      
PHPz

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

PHPz
  1. 不用js进行浮点运算

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

伊谢尔伦

改成整数。。。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号