为什么vc中double型的5.5加上1.1等于6.59999999呢
来源:百度知道 编辑:UC知道 时间:2024/05/25 19:47:37
double型的计算原理是什么?
希望能提供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
为什么vc中double型强制转换成int型变成0,应怎么转换
VC中int,long,float.double是如何存储的
VC中AfxMessageBox()如何显示double型数字啊
VC++中double fMax=RAND_MAX是什么意思
double drand48()什么意思?代码?在VC中如何实现相应的功能阿???
在VC++6.0中如何把CString类型变量转换为double型?
vc中如何保存double型数据为文件,并读取它?
C语言中关于double型数据的输入
C语言中两个DOUBLE型变量的比较问题
VB中Single与Double型变量范围的E与D是什么?为什么要带E、D?