一句话说明浮点数为何不能直接 if(f== 0.0)这样判断
2015-07-23 22:20
459 查看
float f = 0.33f * 0.2f;
if(f - 0.066f == 0.0f)
f = 0;
这个是来自csdn论坛的一个帖子,说的比较简单明了。这里是不会走到f=0这个地方的,因为浮点数是底数+指数的存储,计算机并不能连续存储指定精度宽度内的所有浮点数。上述例子中,f第一次计算结果不是0.066,是比0.066稍大的一个数f = 0.066000007,傻眼了吧,呵呵。当然,你要是写成33*2那肯定是66.所有浮点数的与零比较,还是按照
if( f > - 0.0...01 && f < 0.0...01) do-somthing 来写比较安全
if(f - 0.066f == 0.0f)
f = 0;
这个是来自csdn论坛的一个帖子,说的比较简单明了。这里是不会走到f=0这个地方的,因为浮点数是底数+指数的存储,计算机并不能连续存储指定精度宽度内的所有浮点数。上述例子中,f第一次计算结果不是0.066,是比0.066稍大的一个数f = 0.066000007,傻眼了吧,呵呵。当然,你要是写成33*2那肯定是66.所有浮点数的与零比较,还是按照
if( f > - 0.0...01 && f < 0.0...01) do-somthing 来写比较安全
相关文章推荐
- VS中Qt的探索02
- java 参数 "..." 使用介绍
- cmd运行java添加其依赖的jar
- crossApp初级-HelloWorld-3
- iOS程序员面试
- 云计算的三种服务模式:IaaS,PaaS和SaaS
- encodeURIComponent编码2次
- k-means
- 在oc中遍历字符串的至少可以使用以下两种方法
- hdu 1166 敌兵布阵
- fastjson用法5
- Android 如何在Eclipse中查看Android API源码 及 support包源码
- linux基本命令学习笔记
- 提示:This Android SDK requires Android Developer Toolkit version 21.1.0 or above. Current version is
- jQuery之选择器
- Openssl req命令
- oc011---block
- 函数指针和回调函数
- Android APK加固技术方案调研
- DDMS files not found: D:\andriod\android-sdk-windows\platform-tools\h