看一小段C语言程序:

int main()
{
float x = 1.3;
x = x - (int)x;
int i = (int)(x*);
return ;
}

在你心目中, 变量 I 是怎样的结果?

如果你理所当然地认为是3的话, 那么你就错了~~~

实际结果应该是2.   为什么?

简而言之, x在内存的值并不是精确的1.3, 实际上可能是1.29999999......

因为在计算机组成原因中有说过, 浮点数无法被准确地表示出来, 只能是一个非常精确的值..

就算现在你已经知道这个"坑"了, 但还是不小心会犯, 所以务必要牢记~~~

处理办法:

1. 使用精度更高的double.

2. 取整之前四舍五入(加上一个非常小的0.00000.......005, 但要注意浮点数的精度范围), 就像下面这样.

int main()
{
float x = 1.3;
x = x - (int)x;
int i = (int)(x*+0.00005);
return ;
}

同时也要值得注意的是, 这个四舍五入的操作只能用于取整的时候, 你不能加在原浮点值上面改变了原来的浮点数值.

女孩不哭 @ cnblogs.com/memset @ 2014-05-02

最新文章

  1. Hybrid技术的设计与实现(转)
  2. Yii 多个子目录同步登录
  3. IE 浏览器 如何关闭令人讨厌的“此网站需要运行以下加载项:XXX。如果您信任该网站和该加载项并允许运行该加载项,请单击这里...
  4. Servlet的过滤器Filter
  5. MyEclipse------带进度条的输入流
  6. IClassSchemaEdit修改要素类信息
  7. 集成容联:Warning! ivar size mismatch in PSUICollectionView_ - can't change the superclass.解决办法
  8. overload的一点思考
  9. html5 中的SVG 和canvas
  10. iOS利用通知(NSNotification)进行传值
  11. InstallShield打包
  12. 【STL】reverse函数用法
  13. java编写双色球源代码。-----系统作为彩票双色球生成器,模拟机选一注双色球的彩票号码
  14. Jedis分片Sentinel连接池实验
  15. Mysql 查询条件中字符串尾部有空格也能匹配上的问题
  16. hibernate08--OpenSessionInView
  17. postgresql-JSON使用
  18. facebook api call——error
  19. STL_map.插入
  20. InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClas...

热门文章

  1. JS触发事件大全
  2. 新浪微博客户端(20)-集成MJRefresh
  3. 新浪微博客户端(5)-自定义UISearchBar
  4. AngularJS--学习笔记(一)
  5. Jquery Validate 正则表达式实用验证代码
  6. WinAPI【远程注入】三种注入方案【转】
  7. HTML 快速入门
  8. 2015安徽省赛 D.锐雯上单不给就送
  9. Python爬虫经验
  10. wordpress工作原理