为什么负数的模数为正(-7%6 == 5)?

创造者或可能不是

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

print(-7 % 6 == 5);

这意味着-7 % 6yields 5,但是我希望看到-1(在JavaScript中是这种情况)。

DartPad中的证明

创造者或可能不是

Dart中的模态行为不同于JavaScript,C,C ++等中的行为。它与Python共享其行为,并且关于这个主题,这里有一个很好的答案

模数在Dart中始终为正数。


@kennytm出色答案中添加了一点,对此的直观解释是,它的工作类似于正因式分解(至少在Dart中如此):

17 % 6 == 5          <=> -7 % 6 == 5
(2 * 6 + 5) % 6 == 5 <=> (-2 * 6 + 5) % 6 == 5

但是,可以很容易地以不同的方式合理地实现它,但这就是Dart中的工作方式。

这样做的好处如下(引用前面提到的答案):

之所以选择它是因为C行为,因为非负结果通常更有用。一个示例是计算工作日。如果今天是星期二(第2天),那么N天之前的星期几是什么在Python中,我们可以使用

return (2 - N) % 7

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么打印5 5 5而不是5 6 7?(多个单例呼叫)

来自分类Dev

Ruby排序-为什么“预期:[7、6、5、5、4、3、3]”时rspec错误似乎与“获得:[7、6、5、5、4、3、3]”相同?

来自分类Dev

eslint解析错误:ecmaVersion必须为3、5、6或7

来自分类Dev

为什么 int arr[]={0,3,2,4,5,6,7}; 给出错误和 int arr[7]={0,3,2,4,5,6,7}; 不是

来自分类Dev

为什么const(<= 5)5 6 == False?

来自分类Javascript

为什么在JavaScript中[5,6,8,7] [1,2] = 8?

来自分类Dev

RHEL5 / 6/7:如果未设置NM_CONTROLLED,默认值为什么?

来自分类Dev

为什么n = [1,2,3,4,5,6,7,8],n [:6:-2]在Python中是[8]?

来自分类Dev

重新排列 PHP 数组,将 1、2、3、4、5、6、7、8、9 重新排序为 1、4、7、2、5、8、3、6、9

来自分类Dev

如何使用iOS 5为armv6和armv7架构构建

来自分类Dev

perl-解析有符号整数,字节长度为3、5、6、7

来自分类Dev

XCode 5和iOS 6和7

来自分类Dev

为什么“ [range(5,6)]中range(5,6)中的5”返回True?

来自分类Dev

使用unclass()函数的目的是什么?以及为什么出现错误“”如果为正则列索引必须最大为2,而不是3,4,5,6,7,8,9,10“

来自分类Dev

为什么+(5,6)在javascript中返回6?

来自分类Dev

在go lang中,为什么是7?断言(5 ^ 2 == 7)

来自分类Dev

角度5更新为6

来自分类Dev

批处理文件中cp%1%2%3%4%5%6%7%8%9的含义是什么

来自分类Dev

为什么在Javascript上(4 + 5 +“ 6”)是96,而(“ 4” + 5 + 6)是456?

来自分类Java

为什么Java 6编译的类大小大于Java 5?

来自分类Dev

echo [9876543210]显示1 4 5 6 ...为什么?

来自分类Python

为什么'12345'.count('')返回6而不是5?

来自分类Dev

为什么此代码显示6而不是5?

来自分类Dev

固定在 6 轮为什么不是 5 轮?

来自分类Dev

为什么以下代码打印5而不是6?

来自分类Dev

为什么功能打印i:6而不是i:5

来自分类Javascript

为什么变量“ y”的值是5?不是7?

来自分类Dev

为什么ast.literal_eval('5 * 7')失败?

来自分类Dev

为什么这个循环 7 次而不是 5 次?

Related 相关文章

  1. 1

    为什么打印5 5 5而不是5 6 7?(多个单例呼叫)

  2. 2

    Ruby排序-为什么“预期:[7、6、5、5、4、3、3]”时rspec错误似乎与“获得:[7、6、5、5、4、3、3]”相同?

  3. 3

    eslint解析错误:ecmaVersion必须为3、5、6或7

  4. 4

    为什么 int arr[]={0,3,2,4,5,6,7}; 给出错误和 int arr[7]={0,3,2,4,5,6,7}; 不是

  5. 5

    为什么const(<= 5)5 6 == False?

  6. 6

    为什么在JavaScript中[5,6,8,7] [1,2] = 8?

  7. 7

    RHEL5 / 6/7:如果未设置NM_CONTROLLED,默认值为什么?

  8. 8

    为什么n = [1,2,3,4,5,6,7,8],n [:6:-2]在Python中是[8]?

  9. 9

    重新排列 PHP 数组,将 1、2、3、4、5、6、7、8、9 重新排序为 1、4、7、2、5、8、3、6、9

  10. 10

    如何使用iOS 5为armv6和armv7架构构建

  11. 11

    perl-解析有符号整数,字节长度为3、5、6、7

  12. 12

    XCode 5和iOS 6和7

  13. 13

    为什么“ [range(5,6)]中range(5,6)中的5”返回True?

  14. 14

    使用unclass()函数的目的是什么?以及为什么出现错误“”如果为正则列索引必须最大为2,而不是3,4,5,6,7,8,9,10“

  15. 15

    为什么+(5,6)在javascript中返回6?

  16. 16

    在go lang中,为什么是7?断言(5 ^ 2 == 7)

  17. 17

    角度5更新为6

  18. 18

    批处理文件中cp%1%2%3%4%5%6%7%8%9的含义是什么

  19. 19

    为什么在Javascript上(4 + 5 +“ 6”)是96,而(“ 4” + 5 + 6)是456?

  20. 20

    为什么Java 6编译的类大小大于Java 5?

  21. 21

    echo [9876543210]显示1 4 5 6 ...为什么?

  22. 22

    为什么'12345'.count('')返回6而不是5?

  23. 23

    为什么此代码显示6而不是5?

  24. 24

    固定在 6 轮为什么不是 5 轮?

  25. 25

    为什么以下代码打印5而不是6?

  26. 26

    为什么功能打印i:6而不是i:5

  27. 27

    为什么变量“ y”的值是5?不是7?

  28. 28

    为什么ast.literal_eval('5 * 7')失败?

  29. 29

    为什么这个循环 7 次而不是 5 次?

热门标签

归档