收藏
回答

貌似发现了个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
    回复
  • 麴
    01-09

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

    01-09
    赞同
    回复
  • 怪你过分美丽丶
    怪你过分美丽丶
    2018-03-23

    没有toFixed就是麻烦

    2018-03-23
    赞同
    回复