gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:55:18 26 4
gpt4 key购买 nike

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

打印

新T =
     123         364         123         902

答案 =
 1.234e+02

答案 =
 1.234e+02

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

最佳答案

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

>> int32(3) + 0.4
ans =
3
>> [int32(3) 0.4]
ans =
3 0

这是历史原因,因为(IIRC)Matlab原本根本不支持整数,所以Matlab中的所有数值常量都产生double值,并且创建了提升规则,使得可以将整数类型与浮点混合使用常数。

要解决此问题,请在连接之前将这些 int 类型显式转换为 double 型。
newT = [b(i) double(d(i)) a(i) double(z(i))];

关于MATLAB - 整数与小数赋值奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9574025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com