Matlab: int32(2)/int32(3) 给出 1。如何得到正常的整数除法?

标签 matlab

当我将代码从 C++、Java、Python 等语言移植到 Matlab 中,并需要它以与整数相同的方式运行时。

int32(n) 不适用于除法(见帖子标题)。有没有一种类型可以做到?

编辑: 你猜怎么着,事实证明我最喜欢的语言并不像我想象的那么一致。 C++:

#include <cstdio>
int main() {
    #define TEST(a, b)  printf("%d / %d = %d\n", (a), (b), (a)/(b));
    TEST(-4, 3);
    TEST(4, -3);
    TEST(-5, 3);
    TEST(5, -3);
    TEST(-1, 2);
    TEST(1, -2);
    return 0;
}

产生:

-4 / 3 = -1
4 / -3 = -1
-5 / 3 = -1
5 / -3 = -1
-1 / 2 = 0
1 / -2 = 0

python :

def TEST(a, b): return (a)/(b)

>>> TEST(-4, 3);
-2
>>> TEST(4, -3);
-2
>>> TEST(-5, 3);
-2
>>> TEST(5, -3);
-2
>>> TEST(-1, 2);
-1
>>> TEST(1, -2);
-1

最佳答案

“正常整数除法”,我认为你的意思是“底除法”,就像其他语言所做的那样?

在这种情况下,使用带有显式舍入选项的 idivide:

> idivide(int32(2), int32(3), 'floor')
ans = 0

关于Matlab: int32(2)/int32(3) 给出 1。如何得到正常的整数除法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380178/

相关文章:

linux - MATLAB 中的最大波特率是多少?

matlab - 使用蒙特卡罗方法将矩阵元素扰动到其标称值周围约 10%

c++ - 如何在 C++ 中向量化 for 循环?

matlab - 如何在 MATLAB 中为矩阵的特定位置赋值?

matlab - 如何在 MATLAB 中对矩阵的每一项应用条件并获得相同大小的输入矩阵并计算 1 的数量?

matlab - 类型为 'mtimes' 的输入参数的未定义函数或方法 'struct'

matlab - Matlab 中的降维

algorithm - 时域中的 zeropadding 感

android - 从android执行Matlab函数

python - 如何像 Matlab parfor 一样并行化 Python 中的 for 循环?