我是Erlang的新手.你怎么做模数(得到除法的其余部分)?它在大多数类C语言中都是%,但它在Erlang中指定了注释.
有几个人回复了rem,在大多数情况下这很好.但我正在重新考虑这一点,因为现在我需要使用负数而rem会给你一个除法的余数,这与负数的模数不同.
所以我认为负数,当mod'ed应该被放入正空间...我不能让这发生在objective-c
我期待这个:
-1 % 3 = 2
0 % 3 = 0
1 % 3 = 1
2 % 3 = 2
Run Code Online (Sandbox Code Playgroud)
但得到这个
-1 % 3 = -1
0 % 3 = 0
1 % 3 = 1
2 % 3 = 2
Run Code Online (Sandbox Code Playgroud)
为什么会这样,是否有解决方法?
我正在搞乱python中的模运算,我明白它会吐出余数.
但是,如果第一个数字小于第二个数字怎么办?
例如
2%5答案是2.
这是如何运作的?
2/5 = .4
在Rust中(与大多数编程语言一样),%运算符执行余数运算,而不是模运算.这些操作对负数有不同的结果:
-21 modulus 4 => 3
-21 remainder 4 => -1
Run Code Online (Sandbox Code Playgroud)
println!("{}", -21 % 4); // -1
Run Code Online (Sandbox Code Playgroud)
但是,我想要模数.
我找到了一个解决方法((a % b) + b) % b,但如果已有功能,我不想重新发明轮子!
我需要找出一个数字是否可以被3整除而不使用%,/或者*.给出的提示是使用atoi()函数.知道怎么做吗?
我正在寻找一些有效实现的优秀C代码:
while (deltaPhase >= M_PI) deltaPhase -= M_TWOPI;
while (deltaPhase < -M_PI) deltaPhase += M_TWOPI;
Run Code Online (Sandbox Code Playgroud)
我有什么选择?
我曾经读到过某些地方模数运算符在小型嵌入式设备(例如没有整数除法指令的8位微控制器)上效率低下.也许有人可以证实这一点,但我认为差异比整数除法运算慢5-10倍.
除了保持计数器变量并在mod点手动溢出到0之外,还有另一种方法吗?
const int FIZZ = 6;
for(int x = 0; x < MAXCOUNT; x++)
{
if(!(x % FIZZ)) print("Fizz\n"); // slow on some systems
}
Run Code Online (Sandbox Code Playgroud)
VS:
我目前正在这样做的方式:
const int FIZZ = 6;
int fizzcount = 1;
for(int x = 1; x < MAXCOUNT; x++)
{
if(fizzcount >= FIZZ)
{
print("Fizz\n");
fizzcount = 0;
}
}
Run Code Online (Sandbox Code Playgroud)