多重加法后的双小数飞镖

问题描述 投票:0回答:1

当尝试运行以下片段时。

void main() {
      double step = 0.1;
      double currentAmount = 1;
            while (currentAmount < 2) {
              currentAmount = currentAmount + step;
              print (currentAmount);
            }
    }

输出如下

1.1
1.2000000000000002
1.3000000000000003
1.4000000000000004
1.5000000000000004
1.6000000000000005
1.7000000000000006
1.8000000000000007
1.9000000000000008
2.000000000000001

谁能告诉我为什么小数会出现这种情况,这是正常的行为吗?

dart double decimal
1个回答
0
投票

那是因为你正在失去精度,看看这个 包裹它应该能解决你的问题

© www.soinside.com 2019 - 2024. All rights reserved.