PDA

查看完整版本 : MATLAB-地板问题


poster
2019-12-10, 16:49
我是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的参数中使用了浮点数,因此您将以浮点数形式获得答案。显然,b不是2,而是2.0,这意味着它是非常接近2的双精度数。因此,b / 2变成1.0的双精度,显然在这种情况下,它的值略小于1,为0整数值。如果要防止这种情况,请同时使用floor和ceil,然后比较这些值。

如果要将答案转换为整数,只需使用round而不是floor。



更多&回答... (https://stackoverflow.com/questions/1047578)