社区
C语言
帖子详情
float、double类型如何判断输入的数字是正数还是负数呀
xyj200588
2007-01-10 04:43:26
float、double类型如何判断输入的数字是正数还是负数呀!请高手指教
...全文
7412
17
打赏
收藏
float、double类型如何判断输入的数字是正数还是负数呀
float、double类型如何判断输入的数字是正数还是负数呀!请高手指教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的数请用精度来比较,否则不行
MySQL 数据类型和运算符
Re: MySQL 数据类型和运算符=============================# 数据类型 整数类型:五种 TINY SMALL MEDIUM INT BIG 浮点和定点小数类型:三种
FLOAT
DOUBLE DECIMAL 日期与时间数据类型:五种 YEAR -1 字符串类型:二种 CHAR(M) VARCHAR(M) -1 二进制字符串:位字段BIT 固定BINARY 可变VARBINARY -1 # 运算符 算术 运算符 比较 运算符 逻辑 运算符 位操作 运算符 运算符的优先级-------------------------------------
C/C++中
float
、
double类型
数据正负的
判断
因为
float
和double都有精度限制,所以
判断
该类型数据的正负时,不能使用“< 0.0” 或 “> 0.0” 来
判断
,而是要使用EPISON = 1e-7设置精度边界。
float
与double的范围和精度
float
和double的区别 double是双精度浮点数,内存占8个字节,有效
数字
16位,表示范围是-1.79E+ 308~-1.79E+308。
float
是单精度浮点数,内存占4个字节,有效
数字
8位,表示范围是 -3.40E+38~3.40E+38。 两者处理速度不同,CPU处理
float
的速度比处理double快。double的精度高,double消耗内存是
float
的两倍。 如果不声明,小数默认是
double类型
,用
float
时需要进行强转,或者在小数后加上f。
float
与double的范围
android
判断
字符串浮点数,Android/Java
判断
字符串String是否为
float
浮点数或
double类型
...
Android/Java
判断
字符串String是否为
float
浮点数或
double类型
Android的TextUtils的isDigitsOnly方法检测整型数据没问题,但是检测浮点和
double类型
可能不会返回期望的结果,如:String s1 = "2018"; String s2 = "20.18"; Log.d(s1, TextUtils.isDigitsOnl...
C++
Float
和
Double类型
的有效位解释
存储分析 C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行
float
,double运算 无论是
float
还是double,在内存中的存储主要分成三部分,分别是: 符号位(Sign): 0代表
正数
,1代表
负数
指数位(Exponent): 用于存储科学计数法中的指数部分,并且采用移位存储方式 尾数位(Mantissa): 用于存储尾数部分 由图可知:
float
和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章