Matlab:int32(2)/int32(3)给出了1.如何获得正整数除法



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

int32(n)不适用于除法(见文章标题)。有这样的类型吗?

编辑:你猜怎么着,原来我最喜欢的语言并不像我想象的那样一致。C++:

#include <cstdio>
int main() {
    #define TEST(a, b)  printf("%d / %d = %dn", (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

最新更新