为什么以下说法是正确的?

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/

10-09 03:23