MATLAB自动将double转换为int而不进行显式转换

时间:2012-08-11 00:11:39

标签: matlab casting int double

我会让输出说明一切:

>> numFiles, meanTangle, sdTangle

numFiles =

         526


meanTangle =

    0.4405


sdTangle =

    0.1285

现在,当我从这些变量中创建一个向量时:

>> [numFiles meanTangle sdTangle]

ans =

         526           0           0

另外,只是为了澄清:

>> class(numFiles)

ans =

int32

>> class(meanTangle)

ans =

double

>> class(sdTangle)

ans =

double

为什么MATLAB在没有强制转换的情况下将浮动(meanTanglesdTangle)转换为int?

2 个答案:

答案 0 :(得分:5)

它会将您的所有双精度转换为整数,因为您的数组包含单个int。这与精确问题有关。

它将整个数组转换为int32:

类型
>> class(ans)

ans =

int32

答案 1 :(得分:4)

由于未解释的原因,MATLAB将数组中的整数数据类型与浮点数据组合以返回整数数据类型。

点击此处了解详情Float becomes integer 。你的numFiles是一个整数,所以它将所有其他变量也转换为整数。