Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我是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。 更多&回答... |
![]() |
![]() |