收藏
回答

貌似发现了个double类型变量运算的bug?

框架类型 终端类型 操作系统 微信版本 基础库版本
小程序 微信iOS客户端 Android 6.6.3 WeChatLib:1.9.94(2018.3.15 14:07:52)



对带小数点的变量(目测是double型,当前的代码中并未声明该变量为double型)进行三次 + 运算后得到的结果莫名其妙的不正确了,得到的异常结果可能比正确结果大也可能比正确结果小,异常结果精确到小数点后16位,bug一定复现。

另外,当计算的变量是整形的时候并不会出现这个问题。

data: {
   menus: [{ name: 'menu1', price: 1.00, count: 0 }],
   totalPrice: 0
 },
data: {
   menus: [{ name: 'menu1', price: 1.10, count: 0 }]
clkPlus: function (event) {
   var index = event.currentTarget.dataset.index;
   var menus_ = this.data.menus;
   if (null == menus_[index].count) {
     return;
   }
   menus_[index].count++;
   var totalPrice_ = this.data.totalPrice;
   totalPrice_ = totalPrice_ + menus_[index].price;
   this.setData({ menus: menus_, totalPrice: totalPrice_ });
 }
<text>已选总价: {{totalPrice}} 元text>

运算过程与结果的控制台输出如下

0 + 1.1

= 1.1

1.1 + 1.1

= 2.2

2.2 + 1.1

= 3.3000000000000003

3.3000000000000003 + 1.1

= 4.4

4.4 + 1.1

= 5.5

5.5 + 1.1

= 6.6

6.6 + 1.1

= 7.699999999999999

7.699999999999999 + 1.1

= 8.799999999999999

8.799999999999999 + 1.1

= 9.899999999999999

9.899999999999999 + 1.1

= 10.999999999999998


最后一次编辑于  2018-03-19
回答关注问题邀请回答
收藏

3 个回答

  • 这都申请了
    这都申请了
    2018-03-20

    这是浮点型的固有属性

    2018-03-20
    有用 1
    回复
  • 麴
    2019-01-09

    您好,您的那个问题解决了吗?

    2019-01-09
    有用
    回复
  • 小刘同学
    小刘同学
    2018-03-23

    没有toFixed就是麻烦

    2018-03-23
    有用
    回复
登录 后发表内容