Java 中 double a=2.0,b=1.1; 结果是0.899999999 double a=2.0,b=1.2; 结果是0.8 ,这是为什么?

RT,一个是近似数,一个是准确数?为什么?

计算机只能做整数加法,所有的其他运算都要转换成加法运算,小数在计算机里是把整数部分和小数部分分开存储的,现在大多数机器都是32位的,也就是说32为都用来表示整数的话,那么对于无符号整数就是0 到 2^32-1,对于有符号的话就是-2^31 到 2^31-1。如果是实数的话,就不是这样了,机器有两种办法表示实数,一种是定点,就是小数点位置是固定的,一种是浮点,就是小数点位置不固定,计算方法也比较麻烦,通常会比整数运算代价大很多
你在“百度百科”输入“浮点运算”也有这方面的介绍.......
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-26
简单的说i,因为计算机的数值是二进制存放的,整数可以用二进制精确标示,但是小数却不一定可以。因此会出现你说的0.8999999这样的情况。
第2个回答  2012-05-04
看看编译原理就知道了,计算都是反码表示的
相似回答