其他垃圾 2021-09-12 18:52 采纳率: 0%
浏览 26

关于matlab里while循环的小问题

img


想问一下,在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大,退出了循环。
    这也就是说,我们在编写代码的时候,循环变量不要用小数判断,而用计数循环判断,如果要用小数判断,那么需要给个盈余空间,这样才行

    评论

报告相同问题?

问题事件

  • 创建了问题 9月12日

悬赏问题

  • ¥15 WPF动态创建页面内容
  • ¥15 如何对TBSS的结果进行统计学的分析已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析
  • ¥15 SQL数据库操作问题
  • ¥100 关于lm339比较电路出现的问题
  • ¥15 Matlab安装yalmip和cplex功能安装失败
  • ¥15 加装宝马安卓中控改变开机画面
  • ¥15 STK安装问题问问大家,这种情况应该怎么办
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线