社区
数据结构与算法
帖子详情
C里面浮点数和整数怎么比较?
Lawrence444
2002-05-03 10:57:38
C里面,大家都知道浮点数不能直接用==和整数比较,我现在一般用的是floor(x+0.0005)和整数比较,总是觉得精度很低,不知道大家有没有更好的方法。
...全文
5378
13
打赏
收藏
C里面浮点数和整数怎么比较?
C里面,大家都知道浮点数不能直接用==和整数比较,我现在一般用的是floor(x+0.0005)和整数比较,总是觉得精度很低,不知道大家有没有更好的方法。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
born_in70s
2002-05-09
打赏
举报
回复
这个问题其实很简单,如 xiaofeiwdh(小飞) 的方法,只要用
if (fabs(a-c) < epslon)
...
其中epslon 是用户给的允许误差范围。
因为如果 floor(a+0.0005) 可行的话,也就是说Lawrence444(胖子)
的机器上浮点运算结果误差范围 < 0.0005。而floor(a+0.00001) 之所以
不行,是因为机器的实际误差范围超过了0.00001。
显然判断 if (fabs(a-c) < epslon), epslon = 0.0005 会给出同样
的结果。
而如果用Lawrence444(胖子)的方法,会得出 1.501 * 230 (345.23附近)
等于345的结论, 这样的精度损失显然是不合理的。
但 if (fabs(a-c) < epslon), epslon = 0.0005 能给出正确的结论。
rty
2002-05-09
打赏
举报
回复
我的意思是假设比较15.3与16或15.3与15
先让两数同乘以10得153与160或153与150
然后再进行比较.
若还有小数,可进行取整或强制类型转换后再比较!
jaidy
2002-05-08
打赏
举报
回复
类型转换
alonejilin
2002-05-08
打赏
举报
回复
直接用类型转换是最简单的方法。
Lawrence444
2002-05-08
打赏
举报
回复
比较大的问题就是,如果浮点数在比较之前经过乘法等操作,比较的结果就会失准。比如,我把一个浮点数1.5*230拿去和345比较,就有可能达不到很高的精度了。
用这个
if(fabs(a-c) < 0.00000001) return(1); /* equal */
就不行
一定要用floor(a+0.0005),写成floor(a+0.00001)都不行。
我用调试器,发现1.5*230=344.999987......
rty
2002-05-08
打赏
举报
回复
可不可以现乘10,然后再强制类型转换比较
xiaofeiwdh
2002-05-08
打赏
举报
回复
首先将整数转换为浮点数
可以用牵制类型转换或赋值给一double变量
其次两浮点数相减
最后差值取绝对值,检查差值与要求精度差距
例:
int equ_dou_int(double a, int b)
{
if(fabs(a-c) < 0.00000001) return(1); /* equal */
return(0);
}
xotongliu
2002-05-05
打赏
举报
回复
(float) !!!!!
ffans
2002-05-04
打赏
举报
回复
在比较之前,将整数乘以1。0,在比较就行,这样既不改变整数的类型,又可以比较。
晨星
2002-05-03
打赏
举报
回复
同上。
wudi_1982
2002-05-03
打赏
举报
回复
直接用类型强制转换就可以了,
born_in70s
2002-05-03
打赏
举报
回复
IEEE 754 标准的float类型含23个尾数位,精度达到 1/2^23, 或0.000001.
在C里即使直接比较也比你的算法精度高啊。
tanjiaqi
2002-05-03
打赏
举报
回复
可以用类型转换
然后比较
用c语言求一个
整数
的阶乘
不懂的都在
里面
了,自己看在不懂给我发邮箱891694742@qq.com
10进制与16进制
浮点数
转换
用于将10进制转换为16进制,或者将16进制转换为10进制的
浮点数
转换工具。
c语言的自测练习
比较
简单,适合新人,c语言自测练习,不是c++
C primer plus 第二章作业 作业2-1.c
C primer plus 第二章作业 2.1 编写一个程序,调用printf()函数在一行上输出您的名和姓,再调用一次printf()函数在两个单独的行上输出您的名和姓,然后调用一对printf()函数在一行上输出您的名和姓。输出应如下所示(当然
里面
要换成您的姓名):
14. printf 函数.pdf
14. printf 函数
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章