相关疑难解决方法(0)

Python中%的结果是什么?

什么是%在计算?我似乎无法弄清楚它的作用.

例如,它是否计算出计算的百分比:4 % 2显然等于0.如何?

python syntax operators modulo python-2.7

229
推荐指数
7
解决办法
106万
查看次数

整数除法的行为是什么?

例如,

int result;

result = 125/100;
Run Code Online (Sandbox Code Playgroud)

要么

result = 43/100;
Run Code Online (Sandbox Code Playgroud)

结果总会成为师的底线吗?什么是定义的行为?

c math c99 integer-division c89

197
推荐指数
6
解决办法
34万
查看次数

带负数的模运算

在ac程序中我正在尝试以下操作(只是检查行为)

 x = 5 % (-3);
 y = (-5) % (3);
 z = (-5) % (-3); 

printf("%d ,%d ,%d", x, y, z); 
Run Code Online (Sandbox Code Playgroud)

给我输出为(2, -2 , -2)gcc.我每次都期待一个积极的结果.模数可以为负数吗?任何人都可以解释这种行为吗?

c gcc modulo

172
推荐指数
8
解决办法
18万
查看次数

Java中的Mod产生负数

当我计算int i = -1 % 2 我得到-1Java.在Python中,我得到1了结果-1 % 2.使用模数函数在Java中获得相同的行为我需要做什么?

java math mod

142
推荐指数
2
解决办法
13万
查看次数

Python 选择将整数除法舍入到负无穷大背后的数学原因是什么?

我知道Python//向负无穷大舍入,而在C++中则/是截断,向0舍入。

到目前为止,这是我所知道的:

               |remainder|
-12 / 10  = -1,   - 2      // C++
-12 // 10 = -2,   + 8      # Python

12 / -10  = -1,     2      // C++
12 // -10 = -2,   - 8      # Python

12 / 10  = 1,      2       // Both
12 // 10 = 1,      2

-12 / -10 = 1,    - 2      // Both
          = 2,    + 8

C++:
1. m%(-n) == m%n
2. -m%n == -(m%n)
3. (m/n)*n …
Run Code Online (Sandbox Code Playgroud)

c++ python rounding integer-division python-3.x

88
推荐指数
6
解决办法
8440
查看次数

为什么模数除法(%)仅适用于整数?

我最近遇到了一个问题,可以使用模数除法轻松解决,但输入是一个浮点数:

给定周期函数(例如sin)和只能在周期范围内计算它的计算机函数(例如[-π,π]),创建一个可以处理任何输入的函数.

"明显"的解决方案是这样的:

#include <cmath>

float sin(float x){
    return limited_sin((x + M_PI) % (2 *M_PI) - M_PI);
}
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?我收到此错误:

error: invalid operands of types double and double to binary operator %
Run Code Online (Sandbox Code Playgroud)

有趣的是,它确实在Python中有效:

def sin(x):
    return limited_sin((x + math.pi) % (2 * math.pi) - math.pi)
Run Code Online (Sandbox Code Playgroud)

c c++

75
推荐指数
5
解决办法
11万
查看次数

在C/C++中获得正模数的最快方法

通常在我的内部循环中,我需要以"环绕"方式索引数组,因此如果数组大小为100并且我的代码要求元素-2,则应该给出元素98.在许多高级语言中作为Python,人们可以简单地使用my_array[index % array_size],但由于某种原因,C的整数运算(通常)向零舍入而不是一致向下舍入,因此当给定负的第一个参数时,其模运算符返回负结果.

通常我知道这index不会少于-array_size,在这些情况下我只是这样做my_array[(index + array_size) % array_size].但是,有时这无法得到保证,对于那些情况,我想知道实现始终为正模数函数的最快方法.有几种"聪明"的方法可以在没有分支的情况下完成,例如

inline int positive_modulo(int i, int n) {
    return (n + (i % n)) % n;
}
Run Code Online (Sandbox Code Playgroud)

要么

inline int positive_modulo(int i, int n) {
    return (i % n) + (n * (i < 0));
}
Run Code Online (Sandbox Code Playgroud)

当然,我可以对这些进行分析,以找出哪个是我系统中最快的,但我不禁担心我可能错过了一个更好的,或者我的机器上的速度可能在另一个机器上很慢.

那么有没有一种标准的方法可以做到这一点,或者一些我错过的聪明技巧可能是最快的方式?

此外,我知道这可能是一厢情愿的想法,但如果有一种方法可以自动矢量化,那将是惊人的.

c c++ performance

56
推荐指数
5
解决办法
3万
查看次数

是否存在模数(非余数)函数/运算?

在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,但如果已有功能,我不想重新发明轮子!

modulo rust

42
推荐指数
3
解决办法
1万
查看次数

汇编语言 - 如何模数?

在x86汇编程序中有类似模运算符的东西吗?

x86 assembly modulo integer-division

34
推荐指数
2
解决办法
10万
查看次数

如何在C中找到除法的余数?

找出两个数字的除法是否会返回余数的最佳方法是哪一种?我们举个例子,我有一个值为{3,5,7,8,9,17,19}的数组.现在我需要从上面的数组中找到51的完美除数.有没有更简单的方法来解决这个问题?

c division

11
推荐指数
2
解决办法
14万
查看次数