不论是float还是double在存储方式上都遵从IEEE的规范,float遵从的是IEEE R32.24 ,而double 遵从的是R64.53。
#include <stdio.h> int main() { float a=999.999; float b=0.005; printf("%lf/n",a+b-1000.004); return 0; } 看看得到的结果并不是0,按数学计算本来应该是0,但由于浮点数的存储有微小的误差从而导致计算结果不是0.double m=3.3; cout<<m; 你输入3.3,再调试监测m的值你会发现存储的是3.299999998,而不是3.3.这就是本来是3.3而经过存储却变的不是3.3.对计算机来说,实数是不存在的东西。一般,计算机除了认识“整数”——这个整数和数学中的整数也不是一个东西。还认识的一种数就是“浮点数”——和数学中的实数更是两码事。