如何避免计算机计算出错?

news/2024/7/4 8:29:19

本文目录

一、回避策略

二、把小数转换成整数来计算


计算机计算出错的原因之一是,采用浮点数来处理小数(另外,也有因“位溢出”而造成计算错误的情况)。作为程序的数据类型,不管是使用单精度浮点数还是双精度浮点数,都存在计算出错的可能性。接下来将介绍两种避免该问题的方法。

一、回避策略

首先是回避策略,即无视这些错误。根据程序目的的不同,有时一些微小的偏差并不会造成什么问题。例如,假设使用计算机设计工业制品。将100个长0.1毫米的零件连接起来后,其长度并非一定要是10毫米,10.000002毫米也没有任何问题。一般来讲,在科学技术计算领域,计算机的计算结果只要能得到近似值就足够了。那些微小的误差完全可以忽略掉。

二、把小数转换成整数来计算

另一个策略是把小数转换成整数来计算。计算机在进行小数计算时可能会出错,但进行整数计算(只要不超过可处理的数值范围)时一定不会出现问题。因此,进行小数的计算时可以暂时使用整数,然后再把计算结果用小数表示出来即可。例如,本章一开头讲过的将0.1相加100次这一计算,就可以转换为将0.1扩大10倍后再将1相加100次的计算,最后把结果除以10就可以了(代码清单让所示)。

#include<stdio.h>

void main() {

	// int是整数的数据类型
	int sum;
	int i.
	
	// 将保存总和的变量清0
	sum = O;
	
	// 将1相加100次
	for(i = 1; i <= 100; i++){
		sum += 1;
	}
	
	// 总和结果除以10
	sum /= 10;
	
	// 显示结果
	printf("*d\n", sum);
}

除此之外,BCD(Binary Coded Decimal) 也是一种使用二进制表示十进制的方法。简单来讲,BCD就是用4位来表示0~9的1位数字的处理方法,这里不再做详细说明。在涉及财务计算等不允许出现误差的情况下,一定要将小数转换成整数或者采用BCD方法,以确保最终得到准确的数值。

参考资料:《程序是怎么跑起来的》

完结!


http://www.niftyadmin.cn/n/1993245.html

相关文章

如何修改网卡的MAC(物理)地址

如何修改网卡的MAC&#xff08;物理&#xff09;地址 更改网卡 MAC 地址的文章我曾经见过不少&#xff0c;但是都说的不够全面&#xff0c;下面我试着将各种方法总结出来&#xff0c;希望对大家有所帮助。 一、简单的修改方法 其实不论 98 还是 2000 &#xff0c;自身都已…

如何取消github邮件订阅

在GitHub上订阅了某个主题&#xff0c;之后没有想到github邮件订阅充斥着大量非必需信息&#xff0c;给我造成了困扰&#xff0c;在这里说一下如何取消github邮件订阅的消息。 第一步&#xff1a;右上角头像 ----> Settings 第二步&#xff1a;在个人中心左侧出现的条目中找…

女人爱问的几个问题的标准答案ZZ

女人爱问的几个问题的标准答案ZZ 转自水木社区 感觉有点意思HOHO~~~~ 问题一:你爱我吗&#xff1f; 错误答案A:“爱。” 错误答案B:“这还用问吗&#xff1f;” 错误答案C:“你烦不烦啊&#xff1f; 标准答案:目光怜爱的望着对方三秒&#xff0c;然后神情的点一下头&…

【面试】Java集合中List,Set以及Map等集合体系详解

转载请注明出处&#xff1a;Java集合中List,Set以及Map等集合体系详解 一、概述 先来上一张 Collection 继承体系的图&#xff1a; 再来上一张 Map 继承体系的图&#xff1a; 由以上两张图可知以下内容&#xff1a; List&#xff0c;Set&#xff0c;Map 都是接口List&#xf…

【常用命令】netstat -ano命令图文详细说明

在 Windows 中可以用 netstat 命令显示套接字内容&#xff0c;如下图所示&#xff0c;图中的第一行相当于一个套接字&#xff0c;当创建套接字时&#xff0c;就会在这里增加一行新的控制信息&#xff0c;赋予“即将开始通信”的状态&#xff0c;并进行通信的准备工作&#xff0…

DLL导出变量

DLL导出变量DLL定义的全局变量可以被调用进程访问&#xff1b;DLL也可以访问调用进程的全局数据&#xff0c;我们来看看在应用工程中引用DLL中变量的例子&#xff08;单击此处下载本工程附件&#xff09;。/* 文件名&#xff1a;lib.h */#ifndef LIB_H#define LIB_Hextern int…

【异常】记录“错误: 找不到或无法加载主类 com.iotsoft.back.iotauthority.ApplicationRun”的解决方案

本文目录 一、背景描述 二、报错原因 三、解决方案 方案一&#xff1a;把中文目录改成英文即可 方案二&#xff1a;maven --> install 一、背景描述 今天从 Git 上新 checkout 下来一个项目&#xff0c;运行居然报错。由于代码是别人开发的&#xff0c;我刚接手&#…

【Nginx】记录 nginx 配置文件中 location下根据 ua (user-agent) 判断移动端和电脑端不同浏览器来源

本文目录 一、背景描述 二、问题原因 三、解决方案 一、背景描述 由于已出货的产品上印的有APP软件的下载地址&#xff08;https://www.****.com/a/fwyzc/mrjxz/&#xff09; 的二维码&#xff0c;而这个下载地址是无法改变的&#xff0c;使用手机扫描这个二维码出现web端的…