为什么vc中double型的5.5加上1.1等于6.59999999呢

来源:百度知道 编辑:UC知道 时间:2024/05/25 19:47:37
double型的计算原理是什么?
希望能提供double型计算原理~谢谢

为什么double型的1.1在计算机中是1.1000000000000001,5.5是5.5000000000000000,而6.6就是6.5999999999999996了呢。

原因是这样的:

首先在计算机中所有的数据都是以二进制方式存储的;double的十进制在存储时也要转化为二进制方式。
那么十进制如何转化为二进制呢,方法如下,整数部分采用除2取余法,小数部分采用乘2取整法(这里不细讲进制转化的方法,请查阅相关资料),所以
1.1表示为二进制是1.00011001100110011...(0011的循环下去)
5.5表示为二进制是101.1
6.6表示为二进制是110.1001100110011001...(1001的循环下去)
由此可见,1.1和6.6转化为二进制存放在计算机中这是一个近似值,只能是无限的趋近这个数,但并不能等于这个数。当把这个二进制再转换为10进制进行显示时,误差就这样出现了。

计算机表示浮点数不是你想象的那样,
它是不一定能精确表示的,

就像PI是3.1415926...一样,不能被精确表示,只能无限接近,

double型的数据是用科学记数法保存数据。
其中数值部分用n/2^k表示(2^k:2的K次方,k与你的机器相关)。而不能精确地转化为n/2^k形式的小数就取它的近似值,于是就出现了6.6=6.59999999