首页 > 其他分享 >3.1 将0.1累加100次也得不到10

3.1 将0.1累加100次也得不到10

时间:2023-02-07 21:36:31浏览次数:44  
标签:10 计算机 0.1 累加 3.1 100

 

 由心算得:0.1累加100次后的结果是10,但是由程序运行之后显示的结果不是10。

 

 程序没有错,计算机也没有出现故障,当然C语言也没有问题,可为什么会出现这样的结果呢?

这时如果考虑下计算机处理小数的机制,就讲的通了。那么计算机内部是如何处理小数的呢?

标签:10,计算机,0.1,累加,3.1,100
From: https://www.cnblogs.com/ttmeng/p/17099860.html

相关文章

  • 10.11循环处理的实现方法
    接下来,让我们继续解析汇编语言的源代码,看一下for循环及if条件分支等C语言程序的流程控制是如何实现的。代码清单10-8是将局部变量i作为循环计数器“连续进行10次......
  • 10.12条件分支的实现方法
    下面让我们来看一下条件分支的实现方法。条件分支的实现方法同循环处理的实现方法类似,使用的也是cmmp指令和跳转指令,这一点估计大家也预料到了。没错,条件分支就是利用这......
  • 10.13了解程序运行方式的必要性
    通过对C语言源代码和汇编语言源代码进行比较,想必大家对程序是怎样跑起来的”又有了更深的理解。而且,从汇编语言源代码中获得的知识,在某些情况下对查找bug的原因也是有帮......
  • 10.9始终确保全局变量用的内存空间
    熟悉了汇编语言后,接下来将进人到本章的后半部分。C语言中在函数外部定义的变量称为全局变量,在函数内部定义的变量称为局部变量。全局变量可以参阅源代码的任意部分,而局部......
  • 10.10临时确保局部变量用的内存空间
    为什么局部变量只能在定义该变量的函数内进行参阅呢?这是因为,局部变量是临时保存在寄存器和栈中的。正如本章前半部分讲的那样,函数内部利用的栈,在函数处理完毕后会恢复到初......
  • 用一角、两角和五角的硬币凑出10元一下的金额 接力break
    #include<stdio.h>intmai(){   intx;   intone,two,five;   intexit=0;    scanf("%d",&x);   for(one=1;one<x*10;one++){  ......
  • 10.8函数内部的处理
    接下来,让我们透过执行AddNum函数的源代码部分,来看一下参数的接收、返回值的返回等机制(代码清单10-5)。  ebp寄存器的值在(1)中人栈,在(5)中出栈。这主要是为了把......
  • 10.5最常用的mov指令
    指令中最常使用的是对寄存器和内存进行数据存储的mov指令mov指令的两个操作数,分别用来指定数据的存储地和读出源。操作数中可以指定寄存器、常数、标签(附加在地址前),......
  • 10.6对栈进行push和pop
    程序运行时,会在内存上申请分配一个称为栈的数据空间。栈stack)有“干草堆积如山”的意思。就如该名称所表示的那样,数据在存储时是从内存的下层(大的地址编号)逐渐往上层(......
  • 10.4汇编语言的是语法是“操作码+操作数”
    在汇编语言中,1行表示对CPU的一个指令。汇编语言指令的语法结构是操作码+操作数(也存在只有操作码没有操作数的指令)。操作码表示的是指令动作,操作数表示的是指令对象。......