为什么字长较短的计算机上计算相近数值的减法会有较大误差?
答案:2 悬赏:50 手机版
解决时间 2021-01-30 00:25
- 提问者网友:做自己de王妃
- 2021-01-29 06:22
为什么字长较短的计算机上计算相近数值的减法会有较大误差?
最佳答案
- 五星知识达人网友:北城痞子
- 2021-01-29 06:51
首先,可以用标准的10位计算器做实验:
计算900000^2-899998*900002。
计算器显示的结果是零。但是实际上运用中学所学的平方差公式,可以知道他们的差应该是4。分析原因,是因为计算器分别计算900000^2与899998*900002,由于计算器的位数不够,所以这两个结果都被用科学计数法表示成了8.1*10^11。于是做减法之后结果得零。
类似的,对于字长较短的计算机,其整形数据(“int”,用二进制将数据整个的表示出来,可以参考计算器上显示出的整数)表现力不足,所以对于值比较大或者说长度较大的数据,就需要将其转化为双精度类型的数据(“double”,类似科学计数法,比如说上边的900000^2和899998*900002都被表示为8.1*10^11。计算机中数据表示方法与此略有不同,但是本质上都是科学计数法),这就会导致有效数字的丢失。所以说,在实际数值计算的时候,应该避免像这样的相近的数做减法。
计算900000^2-899998*900002。
计算器显示的结果是零。但是实际上运用中学所学的平方差公式,可以知道他们的差应该是4。分析原因,是因为计算器分别计算900000^2与899998*900002,由于计算器的位数不够,所以这两个结果都被用科学计数法表示成了8.1*10^11。于是做减法之后结果得零。
类似的,对于字长较短的计算机,其整形数据(“int”,用二进制将数据整个的表示出来,可以参考计算器上显示出的整数)表现力不足,所以对于值比较大或者说长度较大的数据,就需要将其转化为双精度类型的数据(“double”,类似科学计数法,比如说上边的900000^2和899998*900002都被表示为8.1*10^11。计算机中数据表示方法与此略有不同,但是本质上都是科学计数法),这就会导致有效数字的丢失。所以说,在实际数值计算的时候,应该避免像这样的相近的数做减法。
全部回答
- 1楼网友:杯酒困英雄
- 2021-01-29 08:10
你好!
字长短了,要求就精确了,近似之后误差当然就大了
我的回答你还满意吗~~
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯