【发布时间】:2010-11-02 15:51:57
【问题描述】:
所以我认为负数,当修改后应该放入正空间......我不能在objective-c中发生这种情况
我希望这样:
-1 % 3 = 2
0 % 3 = 0
1 % 3 = 1
2 % 3 = 2
但是得到这个
-1 % 3 = -1
0 % 3 = 0
1 % 3 = 1
2 % 3 = 2
为什么会这样?有解决方法吗?
【问题讨论】:
-
Clojure 是我遇到的第一个正确实现 mod 的语言。耶!
-
@ToddOwen:Python 也能做到这一点
-
@Todd,Lisp 两者都有。
-
使用 frem(a,b) — 您期望的模数(标准数学中使用的那种)在编码中称为“余数”。 C 有 fmod() 和 frem(),你使用 mod (aka "%"),你需要使用 rem。数学中的取模 === 代码中的余数 (rem)。愚蠢,我知道。
-
我注意到 frem(a,b) 仅在 GNU C 中,而不是在 Obj-C 中。相当于是这样的:
a-b*floor((float)a/(float)b)
标签: objective-c modulo