第三章计算机进行小数运算时出错的原因

以前的我以为计算机是什么都可以做的不会出现什么错误,但我看完这一章以后我才知道,计算机在程序运行后无法得出自己想要的结果,就是十进制转换二进制时,出现了小数的情况

下边我可以通过这个例子就能看出来;

#include <studio.h>

void main() {

float sum;

int i;

sum = 0;

for(i = 1; i <= 100;i++){

sum+=0.1;

}

print f ("%f\n", sum);

}

在这个程序中我们可以看到这是一个利用for循环来实现累加和的程序,我们看到在0.1进行一百次累加和结果是10,

而运行计算机输出的结果是10.000002,这个就是我们没有考虑处理小数的机制导致不能正确运算的。

其实是因为有些十进制的小数无法转换计算机可以识别的二进制数。

小数点后四位用二进制表示时范围是0.0000-0.1111 , 只能表示0.5  0.25   0.125等数值

而0.1在计算机处理时只是一个相似值,不能得到正确的答案。

在这一章中有了解了许多计算机的许多知识,我相信在以后的学习中,通过老师推荐的书籍,讲解的学习方法,我们能对计算机更加了解,

计算机的了解我们现在还是一个皮毛,希望以后能更加努力学习,去了解计算机。

原文地址:https://www.cnblogs.com/bug1820201063/p/10324706.html

时间: 2024-10-11 07:29:17

第三章计算机进行小数运算时出错的原因的相关文章

三:计算机进行小数运算时出错的原因

0.开篇: (1)二进制数0.1,用十进制数表示的话是多少? 0.5 (2)用小数点后有3位的二进制数,能表示十进制数0.625吗? 可以,0.101 (3)将小数分为符号.尾数.基数.指数4部分进行表现的形式称为什么? 浮点数(浮点数形式) (4)二进制数的基数是什么? 2 (5)通过把0作为数值范围的中间值,从而在不使用符号位的情况下来表示负数的表示方法称为什么? EXCESS系统表示(EXCESS是“剩余的”的意思.例如,把01111111看作是0的话,比这个数小1的01111110就是-

计算机进行小数运算时出错的原因和避免方法

计算机进行小数运算时出错的原因: 是因为有一些十进制的小数无法转换成二进制数. 如何地避免小数运算错误: 1.回避策略,即无视这些错误.根据程序目的不同,有时一些微笑的偏差并不会造成什么问题 2.就是把小数转换成整数来计算.计算机计算小数时可能会出错,但进行整数计算时一定不会出现问题.因此我们可以将小数暂时转换成整数在输出的时候再以小数的形式来输出 原文地址:https://www.cnblogs.com/hyy123-/p/10664879.html

计算机进行小数运算会出错

float sum=0; for(int i=0;i<100;i++) sum+=0.1; System.out.print(sum);//10.000002 原因:计算机计算数字时,使用的是二进制,而十进制的0.1,无法用二进制精确表示,是一个二进制循环数,0.00011001100……(1100循环),而计算机对此二进制进行截取后,进行累加操作,必然会出现结果不对的情况.

【程序设计基础】第三章 计算机解决问题的初等概念

计算机解决的问题分类 1.计算型 2.逻辑性 3.混合型 4.反复型(反复执行一组数学计算型和逻辑型指令的问题) 一.常亮与变量 二.数据类型 基本类型:数值型(整型.实型).字符(串)型.逻辑型 三.操作符 数学操作符.关系操作符.逻辑操作符 优先级: 1.括号优先 2.高级到低级 3.同级别从左到右 级别: 1.乘除.整除.取余 2.加减 3.关系运算 4.逻辑运算NOT 5.逻辑运算AND 6.逻辑运算OR 四.表达式(计算机识别的算式)

第三章 计算机及服务器硬件组成结合企业运维场景 总结

写在前面 学习如何调节自己 1. 找到兴趣,成就,给别人讲会 2. 学习要有一定的自我 计算机硬件: 1.   服务器单位是U 英文就是unit, 1U=1.75inch=4.45cm 又查了一下,Rack unit 是机架单位. 也就是服务器的机架 如图所示 Bios 芯片: bios芯片负责主板通电以后各部件自检,设置,保存,一切正常之后才能启动操作系统. 流程: 开机-->加载bios(bios是电脑上的小芯片,用于电脑通电后的各个部件自检,内存,硬盘,cpu等是不是好的) --> 自检

《程序员是怎样跑起来的》第三章

第三章是计算机进行小数运算时出错的原因.主要也是讲了这个原因,读完之后了解到这个原因,是因为有一些十进制数的小数无法转换成二进制数.就会出现错误.因为无法正确表示的数值,最后都变成了近似值.计算机这个功能有限的机器设备,是无法处理无限循环小数的,因此,在遇到循环小数时,计算机就会根据变量数据类型所对应的长度,将数据从中间截断或者四舍五入. 此章又详细介绍了双精度浮点数(64位)和单精度浮点数(32位),又对此加深了理解.对于此前不知道的正则表达式,了解到按照特定的规则来表示数据的形式即为正则表达

读《程序是怎样跑起来的》第第三章有感

第三章讲的主要是关于计算机进行小数运算时出错的原因,首先讲了为什么计算机也会出错,先举了一个例子,将0.1累加100次也得不到10,引出问题,讨论出计算机出错的原因是有一些十进制数的小数无法转换成二进制数,在十进制数与二进制数转换时,有一些无法正确表示的数值,最后都变成了近近似值,计算机无法处理无限循环小数,所以计算机会四首五入或中间截断,所以出现计算机错误的现象. 接下来讲述了浮点数,浮点数就是只用符号,尾数,基数和指数这四部分来表示的小数,更清楚了什么是精度浮点数和单精度浮点数,知道了在浮点

《程序是怎样跑起来的》第三章

第三章,讲的是二进制的小数运算机制,如何用二进制表示小数呢?通俗的说:一个小数乘以2结果小于1就为0基数不变,若大于1为1,基数=基数-1. 例:0.6,0.6*2=1.2>1 为1  基数=1.2-1=0.2,0.2*2=0.4<1  为0  基数=0,0.4*0.8<1 为0  基数=0,0.8*2=1.6>1  为1  基数=1.6-1=0.6....所以0.6二进制:1001.计算机在进行小数运算时,有一些数无法转换成二进制数,例如:1/3结果是循环小数,而计算机是功能有限

程序是怎样跑起来的第三章

这一章讲了计算机计算小数时出错的原因,计算机之所以叫"计算"机就是因为发明它主要是用来计算的,"计算"当然是它的特长,在大家的印象中,计算一定是非常准确的.但实际上, 整数和小数没有太大的差别,是因为计算机内部所有信息都是以二进制数的形式来处理的,但使用二进制表示整数和小数的方法基本相同,比如小数点前和小数点后将个数位的数值和位全相乘的结果相加:浮点数是由符号尾数基数和指数构成的,接下来分别介绍,符号指使用一个数据位来表示数值的符号,尾数部分用的是将小数点前面的值固