Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#3 |
普通会员
注册日期: 2008-04-12
年龄: 46
帖子: 67
声望力: 19 ![]() |
![]()
这是因为计算机计算精度问题,如果你是32位计算机那么就尝试一下64位机器上是否如你所愿。
在command window可以看到matlab给j的赋值: j1 = (0.05:0.05:0.7)' j1 = 5.000000000000000e-002 1.000000000000000e-001 1.500000000000000e-001 2.000000000000000e-001 2.500000000000000e-001 3.000000000000000e-001 3.500000000000000e-001 3.999999999999999e-001 %%%%% 这里,经过matlab运算后4->3.999999999999 4.500000000000000e-001 4.999999999999999e-001 %%%%% 这里,同上 5.499999999999999e-001 %%%%% 这里,同上 6.000000000000000e-001 6.499999999999999e-001 %%%%% 这里,同上 7.000000000000000e-001 floor等舍入函数用的时候要谨慎,因为3.999999999999会被舍入成为3,稍大的程序你就难以预料到会有什么结果出来。 |
![]() |
![]() |