C语言float型算乘法,解释为什么会有0.000001的差距

#include "stdio.h"void main(){int a=5;float f=5.3;printf("a*f=%f\n",a*f);}a*f=26.500000,为什么会是26.500001。请问为什么会产生这样的问题呢?

计算机中所有的数据都是以二进制方式存储的..二进制存放在计算机中这是一个近似值,只能是无限的趋近这个数,但并不能等于这个数.当把这个二进制再转换为10进制进行显示时,误差就这样出现了.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-03
计算机里存储的是2进制数据
象你这种数据转换的2进制是无限位的
当然就不精确了
double和 float的精度不同的
double 8字节 float 4字节
不过应该尽量避免用double浪费内存跟时间本回答被网友采纳
第2个回答  2013-07-03
每个机器类型不一样.所以精度也不一样.不信你可以找资料查阅一下
相似回答