社区
数据结构与算法
帖子详情
在运行pascal时的一个奇怪问题
chenxianwen
2002-07-22 11:34:07
各位大侠,小弟我今天用pascal编了一个程序:
先给ys这个变量赋值为
d[ans[2]]-d[ans[1]]/d2.
结果ys=8.0291970803.
再让 ys=ys-d[ans[2]]-d[ans[1]]/d2.
结果ys<>0.这是为什么?
另:
d[ans[2]]=220;
d[ans[1]]=0;
d2=27.4
另:
急需要用,请给出解决方案。
今天得出的,另给500分;
明天的,另给200分;
后天我就不会结贴给分了。
...全文
40
8
打赏
收藏
在运行pascal时的一个奇怪问题
各位大侠,小弟我今天用pascal编了一个程序: 先给ys这个变量赋值为 d[ans[2]]-d[ans[1]]/d2. 结果ys=8.0291970803. 再让 ys=ys-d[ans[2]]-d[ans[1]]/d2. 结果ys0.这是为什么? 另: d[ans[2]]=220; d[ans[1]]=0; d2=27.4 另: 急需要用,请给出解决方案。 今天得出的,另给500分; 明天的,另给200分; 后天我就不会结贴给分了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ckc
2002-07-22
打赏
举报
回复
d[ans[2]]=220;
d[ans[1]]=0;
不知道d数组是不是整型的,如果是这样的话
可以把它定义成相同的浮点型
或者使用显式的转换成浮点数再与计算
这样应该就没有误差了
ckc
2002-07-22
打赏
举报
回复
浮点运算经常会出类似这样的问题
你的d数组和d2和ys都是相同类型?都是浮点型?
我怀疑是不是因为类型不同,这样在转换时出了点问题
在这种情况下ys即使不为0也是一个很小的数
可以用ys<0.00000001类似的方法
不要直接判断ys是不是为0
chenxianwen
2002-07-22
打赏
举报
回复
哦,说错了。
先给ys这个变量赋值为
(d[ans[2]]-d[ans[1]])/d2.
结果ys=8.0291970803.
再让 ys=ys-(d[ans[2]]-d[ans[1]])/d2.
结果ys<>0.
chenxianwen
2002-07-22
打赏
举报
回复
哦,说错了
ys=(d[ans[2]-d[ans[1])/d2
再让 ys=ys-(d[ans[2]]-d[ans[1]])/d2.
结果ys<>0.
各位,帮帮忙啊!
chenxianwen
2002-07-22
打赏
举报
回复
谢谢火。
我已经把分发给你了。
你看看有没有发到。
ckc
2002-07-22
打赏
举报
回复
2进制表示浮点数,如果小数部分不是2的负整数次方或者2的负整数次方的和的话,一定会有误差的
比如0.5,0.75,0.125这样的小数表示成二进制浮点数没有误差
象0.1,0.2,0.3,0.4这样的小数表示成二进制浮点数是一定会有误差的
所以浮点计算的误差经常是不可避免的
这个问题一般程序设计的基础教材中都会有说到
也正因为这个,判断浮点数是否为一个特定值一定要小心
这也是为什么一般不用浮点数做for的循环变量的原因
zzwu
2002-07-22
打赏
举报
回复
我用下面的程序试验,结果ys为严格的0:
var ys,d2:real;
d:array[1..2] of real;
begin
d[2]:=220;
d[1]:=0;
d2:=27.4;
ys:=d[2]-d[1]/d2;
ys:=ys-d[2]-d[1]/d2;
writeln(ys);
end.
chenxianwen
2002-07-22
打赏
举报
回复
const
m=100;
var
d:array[1..m]of real;
ans:array[1..m]of integer;
不过火说得对,它的确是一个非常小的数。
可是为什么呢,都是浮点型的呀,为什么还会有这样的误差呢?
你必须知道的495个C语言
问题
1.28 文件中的第
一个
声明就报出
奇怪
的语法错误,可我看没什么
问题
。这是为什么? 1.29 为什么我的编译器不允许我定义大数组,如doublearray[256][256]? 命名空间 1.30如何判断哪些标识符可以使用,哪些被保留了...
Pascal
基础
Pascal
基础语法(一) 序言 有
时
无聊,翻看
pascal
,奈何看完即忘.于是记录之
pascal
听说将被NOIP停用,我没有去验证.管他呢,本来只是好奇 环境 用的免费的编译器 fpc [https://www.free
pascal
.org/] 编辑器随便找个自己...
pascal
转c++之路(一)
说在前面今天我初学c++,在此之前我都是一直在用
pascal
,有了
pascal
的编程基础,c++也应该不会太难学(恕...
pascal
与c++的区别首先得说一下读入,在
pascal
中是只有read和readln这两个东西读入的,而在c++中不仅cin,也
pascal
类型、变量及常量
最初的
Pascal
语言是以一些简单的概念为基础建立起来的,这些概念现在普遍出现在编程语言中。最重要的概念当属数据类型,数据类型决定了变量可取的值,...
Pascal
变量在使用前必须声明,声明变量
时
必须指定一种数据...
(delphi11最新学习资料) Object
Pascal
学习笔记---第5章第1节(动态数组)
如果要缩小数组,则会丢失...这意味着,对于
一个
空数组,High 返回-1(仔细想想,这是
一个
奇怪
的值,因为它比 Low 返回的值低)。 在传统的
Pascal
中,数组的大小是固定的,并且在声明数据类型
时
限制了元素的数量。
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章