c++里判断一个浮点数大于0怎么判?

beiguoyouzi 2013-04-26 11:07:08
林锐的《高质量C/C++编程》里有浮点数不等于0的判断,先加入判断一个浮点数在0到某个数的区间时,比如说(0,130),怎么判?
第一种方法
float a;
...
if(a>0.0 && a<130.0)
{...}
第二种方法
float a;
...
if(a>0.00001 && a<130.0)
{...}
第三种方法
float a;
...
if(a>1.0E-15 && a<130.0)
{...}
这上面哪种方法正确,谢谢大拿。
...全文
2607 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hugett 2013-04-27
  • 打赏
  • 举报
回复
第一种是不行的,第二种比较好,一般取到10^-5到10^-8就可以了。。
c1997sdn 2013-04-27
  • 打赏
  • 举报
回复
第一种用起来没问题啊。
ztenv 版主 2013-04-27
  • 打赏
  • 举报
回复
c语言里讲过的哟,和你需要的精度有关系,
nice_cxf 2013-04-27
  • 打赏
  • 举报
回复
都不对,如果没经过计算直接1就可以 如果经过计算那么 两边都要做处理应该是类似 if(a>0.00001 && a<130.001f) 具体是多少要看你自己的需求精度,不是一个固定的数值
赵4老师 2013-04-27
  • 打赏
  • 举报
回复
因为 float.h
...
#define FLT_DIG         6                       /* # of decimal digits of precision */
#define FLT_EPSILON     1.192092896e-07F        /* smallest such that 1.0+FLT_EPSILON != 1.0 */
#define FLT_GUARD       0
#define FLT_MANT_DIG    24                      /* # of bits in mantissa */
#define FLT_MAX         3.402823466e+38F        /* max value */
#define FLT_MAX_10_EXP  38                      /* max decimal exponent */
#define FLT_MAX_EXP     128                     /* max binary exponent */
#define FLT_MIN         1.175494351e-38F        /* min positive value */
#define FLT_MIN_10_EXP  (-37)                   /* min decimal exponent */
#define FLT_MIN_EXP     (-125)                  /* min binary exponent */
#define FLT_NORMALIZE   0
#define FLT_RADIX       2                       /* exponent radix */
#define FLT_ROUNDS      1                       /* addition rounding: near */
...
所以
#include <float.h>
float f;
if (f>FLT_EPSILON)//f大于0.0f
千树之影 2013-04-27
  • 打赏
  • 举报
回复
看你是不是真的想和‘0’比较了。 例如你想要判断数的正负,那就是应该用第一种。
漫步者、 2013-04-26
  • 打赏
  • 举报
回复
浮点数,后面都是保留6位小数来着,第二种吧
疯狂的红豆 2013-04-26
  • 打赏
  • 举报
回复
浮点数在和一个区间作比较的时候还是和整数一致的,因为要比较的是一个大小关系,虽然浮点数在内存中的存储是一个近似值,但是这不影响它与一个确定的数值的比较结果。 关于浮点数与其零值的比较倒是和整数值不一样了,整数值在内存中的存储是精确的,所以是不是整数零值很确定。但是 浮点数因为是近似值存储(因为所有的值都是以2的幂的形式的和),一般认为在某一个很小的范围内时就认为是浮点数的零值了,至于这个区间的设定,一般是10的负5方吧。

65,170

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧