math - 为什么 erlang 重新定义了像余数这样基本的东西?

标签 math erlang

我们所有的数学书都告诉我们余数总是正数。维基告诉我,余数可以是最小正余数或最小绝对余数。这是一个非常基本的概念,对于很多人(包括我)来说很难忘记。当程序员使用多种语言时,这可能会导致奇怪的错误。

erlang重新定义这样一个基本概念的原因是什么?

Eshell V6.2(使用 ^G 中止) 1> -5 雷姆 3。 -2

这个结果与最小正余数或最小绝对余数概念都不一致。

http://en.wikipedia.org/wiki/Remainder#Integer_division

最佳答案

这是因为整数除法向 0 舍入。

它发生在许多其他编程语言中,例如参见 this answer about C .


事实上,如果您认为除法是在 % 运算之前定义的,那么我们仍然期望
a = (a/b) * b + (a % b) 。那么自然而然

  • 5/3 = 1,所以 5 % 3 == 2
  • -5/3 = -1,所以 5 % 3 == -2

如果我们向 -无穷大而不是向 0 舍入,那么 -5/3 将是 -2,% 将是模运算符。现在它只是除法的剩余部分。

关于math - 为什么 erlang 重新定义了像余数这样基本的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27311649/

相关文章:

c - 需要解释此代码

android - 在 EditText 中四舍五入小数

matlab - 获取xy平面中三角形ROI中的所有点

c++ - Erlang 和 C/C++ 集成的状态?

split - 如何在 erlang 中按空格分割二进制文件?

erlang - 如何从 erlang JSON 获取特定值

Erlang:强制公开方法,为什么?

erlang - 同一erlang记录的不同 View

algorithm - 给定允许接触多边形的坐标,计算圆是否适合多边形(三角形/五边形)的内部?

math - 欧拉 Phi 函数实现背后的理论