Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1494287
  • 博文数量: 226
  • 博客积分: 3997
  • 博客等级: 少校
  • 技术积分: 2369
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-19 17:26
个人简介

Never save something for a special occasion. Every day in your life is a special occasion.

文章分类

全部博文(226)

文章存档

2018年(5)

2017年(11)

2016年(1)

2015年(17)

2014年(14)

2013年(30)

2012年(5)

2011年(52)

2010年(107)

分类: C/C++

2010-07-25 15:25:50

 

浮点数的表示误差 ?

float aa=0.9;
int b=int(aa*10-10*(int)aa);

float bb=aa*10-10*(int)aa;

结果:
b=8
bb=9.0

why ?

有一说 “浮点数在计算机里存放会有小小误差,aa的值其实是0.899999 ”
但我查看bb在计算中的表示,确实是 9.0。 难道与寄存器有关?

有人建议我看反汇编结果,可我不懂汇编,只好把问题晾在这里,期待有高手愿意解答。

暂时这样认为
表达式计算结果为8.9999...
转换为整数时丢弃小数,所以b=8.
赋值给bb时0舍1入变成9.0,所以bb=9.0。


 

阅读(910) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~