MATLAB-整数与小数赋值奇怪的错误

MATLAB-整数与小数赋值奇怪的错误,matlab,variable-assignment,Matlab,Variable Assignment,印刷品 蝾螈= newT = [b(i) d(i) a(i) z(i)]; newT, b(i), a(i) ans= ans= 这里有什么问题?为什么newT中的第一个和第三个条目四舍五入为整数值?为什么不能正确分配它们?与大多数其他编程语言不同,Matlab中的整数类型优先于浮点类型。当您通过串联或算术组合它们时,浮点值会隐式地缩小为整数,而不是将整数扩大为浮点值 1.234e+02 这是出于历史原因,因为(IIRC)Matlab最初根本不支持整数,所以Matlab中的所有数值常量都会

印刷品

蝾螈=

newT = [b(i) d(i) a(i) z(i)];
newT, b(i), a(i)
ans=

ans=


这里有什么问题?为什么newT中的第一个和第三个条目四舍五入为整数值?为什么不能正确分配它们?

与大多数其他编程语言不同,Matlab中的整数类型优先于浮点类型。当您通过串联或算术组合它们时,浮点值会隐式地缩小为整数,而不是将整数扩大为浮点值

 1.234e+02
这是出于历史原因,因为(IIRC)Matlab最初根本不支持整数,所以Matlab中的所有数值常量都会产生双值,并且创建提升规则是为了使整数类型与浮点常量混合成为可能

要解决此问题,请在连接之前将这些int类型显式转换为double

>> int32(3) + 0.4
ans =
           3
>> [int32(3)  0.4]
ans =
           3           0
 1.234e+02
>> int32(3) + 0.4
ans =
           3
>> [int32(3)  0.4]
ans =
           3           0
newT = [b(i) double(d(i)) a(i) double(z(i))];