我是 MATLAB 初学者。问题是:
>> a = floor(7/2.5)
a =
2.00
>> b = rem(7,2.5)
b =
2.00
>> c = floor(b/2)
c =
0
c应该是1吧?为什么是0???
直接输入b = 2就不一样了,如下:
>> b = 2
b =
2.00
>> c = floor(b/2)
c =
1.00
最佳答案
两个词:截断错误。
你是对的,c 在精确算术上应该是 1.0。但是,由于您在 rem 的参数中使用了 float ,因此您得到的答案是 float 。显然,b 不完全是 2,而是 2.0,这意味着它是一个非常接近 2 的 double 。因此,b/2 变成了 double 1.0,显然在这种情况下它的值略小于 1,所以你得到一个 0 作为整数值。如果您想防止这种情况发生,请同时使用 floor 和 ceil,然后比较这些值。
如果要将答案转换为整数,只需使用 round 而不是 floor。
关于MATLAB - 楼层问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1047578/