float、double类型如何判断输入的数字是正数还是负数呀

xyj200588 2007-01-10 04:43:26
float、double类型如何判断输入的数字是正数还是负数呀!请高手指教
...全文
7412 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Horsetail 2007-01-20
  • 打赏
  • 举报
回复
类型的最高位表示的是正负!
fallinleave 2007-01-20
  • 打赏
  • 举报
回复
直接<0就行,哪那么多费事
iambic 2007-01-20
  • 打赏
  • 举报
回复
我都是直接和0比较……
zhiguo_he 2007-01-20
  • 打赏
  • 举报
回复
检查符号位
Findback 2007-01-14
  • 打赏
  • 举报
回复
float f;

if(f & 0x80000000)
{

}
else
{

}
eidewood 2007-01-10
  • 打赏
  • 举报
回复
拿float做例子, 一个4BYTE里面,float分位4个部分, 整型部分, 浮点部分,还有符号和级数部分, 符号部分如果是0,那么就是正数,1就是负数,顾名思义,其他部分是储存相对应的数。
晨星 2007-01-10
  • 打赏
  • 举报
回复
不是吧。
仅判断正负的话,用“>0”“<0”足矣。
“==”有精度问题,难道>,<也有精度问题?
「已注销」 2007-01-10
  • 打赏
  • 举报
回复
上面有些地方写错拉....有些地方0.000001多打了0...
「已注销」 2007-01-10
  • 打赏
  • 举报
回复
比如你的程序要判断一个float型的数是大于还是小于0,就不能用>0或<0来比较,因此我给定一个精度0.000001(就是1E-7)和-0.0000001(就是-1E-7),而且这两个数刚好是7个有效位(float数有效数的位数为7位),因此可以用来与float数比较!float>=0.0000001时,就算是正的,如果float<=-0.000001,就是一个负的了
xyj200588 2007-01-10
  • 打赏
  • 举报
回复
好的,谢谢我先用INT做一个了
「已注销」 2007-01-10
  • 打赏
  • 举报
回复
这样理解-EPSINON和EPSINON分别代表的是小于和大于0的浮点数,由于不能用==0.0这样的方法来看一个浮点数是否为0,所以只要用逼近的方法来判断,也就是说-EPSINON和EPSINON是在某个阶下不断逼近0的数,浮点数的判断比较麻烦,建议先看看相关知识,包括浮点数精度表示法啊什么的!
xyj200588 2007-01-10
  • 打赏
  • 举报
回复
iloveyy1112() 能不能具体到一个例子上面呀
如果x=10
-EPSINON代表大于0的数 EPSINON代表什么?为什么还要用&&这个应该怎么样来比较呀

if ((x>=-EPSINON) && (x<=EPSINON))

cluber2001 2007-01-10
  • 打赏
  • 举报
回复
设一个绝对值很小数进行比较,浮点数不能与0相比较
「已注销」 2007-01-10
  • 打赏
  • 举报
回复
不可将浮点变量用“==”或“!=”与任何数字比较。千万要留意,无论是float 还是double 类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。假设浮点变量的名字为x,应当将
if (x == 0.0) // 隐含错误的比较
转化为
if ((x>=-EPSINON) && (x<=EPSINON))
其中EPSINON 是允许的误差(即精度)。

你先看明白这个
xyj200588 2007-01-10
  • 打赏
  • 举报
回复
楼上的这个用法我还是有些不明白,能不能举个例子呀!我是初学者,谢谢
凌殿Y_ST 2007-01-10
  • 打赏
  • 举报
回复
正数: a >= 1E-7
负数: a <= -1E-7
精度表示法
「已注销」 2007-01-10
  • 打赏
  • 举报
回复
float和double的数请用精度来比较,否则不行

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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