C语言:printf("%d",1.2 - 1.0 == 0.2)的输出结果是什么,以及,为什么

如题所述

首先算1.2-1.0实际是多少?为什么不是0.2
要回答这个问题,得先了解计算机内部是如何表示数的
我们都知道,计算机用位来储存及处理数据。每一个二进制数(二进制串)都一一对应一个十进制数。最简单的转换为二进制看一下。
拿0.1举个粒子,它的二进制数 :0.0001100011....。这是一个二进制无限循环小数,但计算机内存有限,我们不能用储存所有的小数位数。那么在精度与内存间如何取舍呢 ?答案是:在某个精度点直接舍弃。当然,代价就是,0.1在计算机内部根本就不是精确的0.1,而是一个有舍入误差的0.1。所以并不是所有的小数再计算机里都是精确的。二进制能精确地表示位数有限且分母是2的倍数的小数。
故一个1.2-1.0并非是0.2,0.2只是一个精度有限的近似值,故不等于0.2,false即0
详细的可以查看再计算机内部怎么表示数的
望采纳
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-06-24
输出为0, 因为不相等。就是假,也就是0
浮点数一般不用于比较操作,因为精度问题会产生比较奇怪的结果,如上。
相似回答