gpt4 book ai didi

matlab - 为什么两个语句会导致不同的结果?

转载 作者:行者123 更新时间:2023-12-04 04:39:42 27 4
gpt4 key购买 nike

Matlab 似乎有一个令人讨厌的特性。我不明白为什么语句的两个结果不同。变量的隐式声明导致它具有双重类型的知识并不能帮助我理解。有人可以解释它们的不同之处吗?这是代码。

K>> m = int16(2799)

m =

2799

K>> n = int16(2800)

n =

2800

K>> int16( 0.5 * abs(n - m) - 0.5)

ans =

1

K>> int16 ( 0.5 * abs(2799 - 2800) - 0.5)

ans =

0

K>>

最佳答案

原因是 int16 算法:
绝对(n - 米)
返回一个 int16,因为它被赋予了 int16。结果是 1。
乘法也将返回一个 int16。因此,0.5 * 1 等于 1。(0.5 及以上的分数四舍五入)

那么我们有: int16(1 - 0.5) 这又是一个。

在另一个语句中,所有变量都是 double 类型:

int16(0.5 * abs(2799 - 2800) - 0.5)
int16(0.5 * 1 - 0.5)
int16(0.5 - 0.5)
int16(0)

现在,当 x 属于 int 类时,为什么 MATLAB 将 0.5 * x 计算为整数乘法?我不知道:-/
但是我在 MATLAB 中遇到了整数问题,因此倾向于避免使用它们。

好的,乘法是用整数完成的,因为 the documentation says so .这与类 C 语言相反(int * double 将产生 double)但没有错。并且(至少)它被正确定义和记录。

关于matlab - 为什么两个语句会导致不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19078218/

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