我爱占星网 我爱占星网
首页
编程
java
php
前端
首页 编程 java php 前端

matlab里面while s<1里面有个if s>1的条件语句,然后奇怪的问题来了...

s=0; while (s<1) p=0.1; s=s+p; if s>1 s=1; end s end 请问这个程序为什么最后输出有两个1呢?

s=0; 
while (s<1) 
    p=0.1; 
    s=s+p; 
    if s>1 
        s=1; 
    end
    s 
end

结果

s =

    0.1000


s =

    0.2000


s =

    0.3000


s =

    0.4000


s =

    0.5000


s =

    0.6000


s =

    0.7000


s =

    0.8000


s =

    0.9000


s =

    1.0000


s =

     1

原因: 由于数值误差的存在,小数 1.0000 < 1 是可能成立的,因此while循环可能多执行一次。

近期文章

  • 钓鱼重力感应浮漂灯制作
  • java通过vspheresdk6.5监控vmware虚拟机迁移的
  • 利用数组,输入3行英文,输出字母、空格及其他字符出现的个数。
  • CentOS gcc 7.3.0 编译cpp_int.hpp文件报错问题
  • VS头文件报错…新建也一样
  • 想自己用安卓写一个记账的app ,可以导入微信或者支付宝账单,有什么办法可以实现吗?
  • 求解惑java强转类型问题
  • 子查询如何优化为关联查询?
  • 帮帮忙吧大佬们求求了
  • 为什么这个算出来是 8,-2,有大佬佬讲讲细节迈
  • plussensor
  • jenkins pipeline最后一步发布到k8s报错
  • 请问LVGL中怎么设置arc控件的触控范围
  • SQL 语句优先级怎么去实现
  • 关于form表单无法将值传入程序中的问题
  • 向广大网友请教一个可能比较低智商的问题,万分感谢!
  • HDP Spark插入HIVE报错
  • 用指针逆序输出一个三位数
  • 离散数学的矩阵问题。
  • 能否不关闭445端口的情况下,控制永恒之蓝在内网传播

Copyright ©2022 我爱占星 All Rights Reserved.

浙ICP备2022030071号-1

部分图文来自网络,如有侵犯您的版权,请告诉我们删除

友情链接:代码精华