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

Evg*_*eev 3 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;
}
Run Code Online (Sandbox Code Playgroud)

生产:

-4 / 3 = -1
4 / -3 = -1
-5 / 3 = -1
5 / -3 = -1
-1 / 2 = 0
1 / -2 = 0
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

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
Run Code Online (Sandbox Code Playgroud)

nne*_*neo 11

通过"正常整数除法",我认为你的意思是"地板划分",就像其他语言一样吗?

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

> idivide(int32(2), int32(3), 'floor')
ans = 0
Run Code Online (Sandbox Code Playgroud)

  • @EvgeniSergeev我总是惊讶于人们实际上对语言历史的了解程度,以及仅根据这些根源的差异来判断其他语言.Python,Java,C++都源于C语言,这是一种为计算机人员设计的语言.基于0的索引,行主要等.Matlab来自FORTRAN,这是一种源自数学中常见的符号的语言.基于1的索引,列专业等.不是更好,不是更糟,只是不同; 一个不同的思想流派.你不喜欢它的事实主要是因为你习惯了C风格的思维. (5认同)
  • Matlab是我所知道的唯一一种默认不同的语言.换句话说,奇怪的是.与正常情况相反,正如您阅读代码寻找错误一样,这是非常深刻的,甚至没有受到质疑.似乎只要有任意决定,Matlab设计师就会选择反对谷物:index-base-1,not-equals使用"〜=",现在这个. (3认同)
  • 标准注释:如果你要与C++进行比较,对于大于0的整数,floor是正确的,ceil对于小于0的整数是正确的.它会截断具有向0舍入的效果. (2认同)
  • Python已经有一个名为NumPy的数字运算库,这对于在Python中进行数学运算是一个相当不错的选择. (2认同)