首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OCaml mod函数返回与%不同的结果

OCaml mod函数返回与%不同的结果
EN

Stack Overflow用户
提问于 2017-10-15 18:42:31
回答 1查看 25.9K关注 0票数 7

OCaml mod中的模块化函数返回的结果与python中的模块化运算符不同。

OCaml:

代码语言:javascript
运行
复制
# -1 mod 4
- : int = -1

Python:

代码语言:javascript
运行
复制
>>> -1 % 4
3

为什么结果不同?

是否有在%中作为OCaml操作的标准模块功能?

EN

回答 1

Stack Overflow用户

发布于 2017-10-16 02:46:44

模的语义与整数除法的语义相联系(通常情况下,如果Q是整数除法a / b的结果,Ra mod b的结果,则a = Q * b + R必须始终为真),因此不同的整数除法对整数的舍入会产生不同的结果。

维基百科的文章模数运算有一个关于不同语言如何处理模块的非常广泛的表格。有几种常见的方法:

  • 在C、Java、OCaml和许多其他语言中,整数除法循环为0,这使得模的结果总是具有与除数相同的符号。在这种情况下,派息(-1)是负的,所以模也是负(-1)。
  • 在Python、Ruby和许多其他语言中,整数除法总是四舍五入(朝向负无穷大),这导致模的结果始终与除数具有相同的符号。在这种情况下,除数(4)是正的,所以模也是正的(3)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46758683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档