想问一下,在matlab里,这样写为什么循环只执行10次
1条回答 默认 最新
- joel_1993 2021-09-12 19:21关注
j = 1的时候 j<=2 执行1次
j = 1.1的时候 j<=2 执行2次
j = 1.2的时候 j<=2 执行3次
j = 1.3的时候 j<=2 执行4次
j = 1.4的时候 j<=2 执行5次
j = 1.5的时候 j<=2 执行6次
j = 1.6的时候 j<=2 执行7次
j = 1.7的时候 j<=2 执行8次
j = 1.8的时候 j<=2 执行9次
j = 1.9的时候 j<=2 执行10次
j = 2.0的时候 j<=2 执行11次
题主是不是这么认为的呢?
matlab里面所有的小数都是有误差的,每次加一个小数,事实上,到了第十次,已经不是精确等于2了,而是比2大一点。
下面用这段代码看看是不是不精确j = 1; count = 0;%计算循环次数 format long%输出显示多位小数 while (j<=2.0) count = count + 1 j = j + 0.1 end
输出结果:
count = 1 j = 1.100000000000000 count = 2 j = 1.200000000000000 count = 3 j = 1.300000000000000 count = 4 j = 1.400000000000000 count = 5 j = 1.500000000000000 count = 6 j = 1.600000000000001 count = 7 j = 1.700000000000001 count = 8 j = 1.800000000000001 count = 9 j = 1.900000000000001 count = 10 j = 2.000000000000001
这个结果告诉我们,第十次循环结束后,j没有精确等于2,而是比2大,退出了循环。
这也就是说,我们在编写代码的时候,循环变量不要用小数判断,而用计数循环判断,如果要用小数判断,那么需要给个盈余空间,这样才行解决 无用评论 打赏 举报
悬赏问题
- ¥15 WPF动态创建页面内容
- ¥15 如何对TBSS的结果进行统计学的分析已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析
- ¥15 SQL数据库操作问题
- ¥100 关于lm339比较电路出现的问题
- ¥15 Matlab安装yalmip和cplex功能安装失败
- ¥15 加装宝马安卓中控改变开机画面
- ¥15 STK安装问题问问大家,这种情况应该怎么办
- ¥15 关于罗技鼠标宏lua文件的问题
- ¥15 halcon ocr mlp 识别问题
- ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线