有关Matlab while循环的相关问题?

clcclearallZahl=0;Summe=0;Schritt=0.1;whileZahl<100Summe=Summe+Zahl;Zahl=Zahl+Schritt... clc
clear all

Zahl=0;
Summe=0;
Schritt=0.1;

while Zahl<100
Summe=Summe+Zahl;
Zahl=Zahl+Schritt;
end
Zahl

Zahl输出为什么是100.1而不是100
展开
 我来答
lhmhz
高粉答主

2021-04-12 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17013

向TA提问 私信TA
展开全部

在使用Matlab while循环时,Zahl输出为什么是100.1而不是100?

1、这是因为Schritt=0.1,而while 条件式为Zahl<100,表面上是小于100,但实际执行1000次,所以其结果为

Zahl=0.1(初值)+(0.1+0.1+。。。1000次累加)=100.1

2、如想得到Zahl=100,则其条件应为

while Zahl<100-0.1

。。。

end

其结果为

Zahl=0.1(初值)+(0.1+0.1+。。。999次累加)=100

百度网友8bb5c1f
游戏玩家

2021-04-12 · 游戏我都懂点儿,问我就对了
知道小有建树答主
回答量:133
采纳率:90%
帮助的人:51.8万
展开全部
误差累积,你认为的数字100在计算机中会有偏差,由于2进制的转换以及计算机的有限表达,导致处理每个数值一定会有误差,误差大小取决于数值算法、有效精度(MATLAB一般用双精度)等。如下代码你就会发现为什么
clc
clear all

Zahl=0;
Summe=0;
Schritt=0.1;

while Zahl<100
100-Zahl
Summe=Summe+Zahl;
Zahl=Zahl+Schritt;
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式