为什么以下说法是正确的?
print(-7 % 6 == 5);
这意味着
-7 % 6
会产生 5
,但我会期望看到-1
(在JavaScript中就是这种情况)。Proof in DartPad。
最佳答案
Dart中的模态行为不同于JavaScript,C,C++等中的行为。它与Python共享其行为,有关此主题,有一个question with great answers here。
模数在Dart中始终为正数。
在superb answer by @kennytm上增加了一点,对此的直观解释是它的工作类似于正因式分解(至少在Dart中如此):
17 % 6 == 5 <=> -7 % 6 == 5
(2 * 6 + 5) % 6 == 5 <=> (-2 * 6 + 5) % 6 == 5
但是,可以很容易地以不同的方式合理地实现它,但这就是Dart中的工作方式。这样做的好处是以下内容(来自the answer mentioned earlier的引用):
关于flutter - 为什么负数的模数为正(-7%6 == 5)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59470362/