Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
以下命令返回1:
ismember(-0.6, -1:.1:.9) 但是下一条命令返回0: ismember(-0.1, -1:.1:.9) 即使-0.1明显位于-1:.1:.9。 有人知道发生了什么吗? 回答: 问题是,当您从-1.0开始并重复添加0.1时,得到的数字与直接指定-0.1时得到的数字略有不同。这是因为浮点错误累积。就像1/3不能精确地用十进制表示(变成0.33333 ...)一样,许多十进制数字也不能精确地用二进制表示。转换为二进制时,0.1实际上非常接近于0.1。由于在使用该浮点数进行算术时会出现轻微的错误,因此此小差异会累积并变得越来越大。 从http://www.mathworks.com/matlabcentr..._thread/246492 : Ashwini Deshpande写道: |
![]() |
![]() |