前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一练(130)

基础知识 | 每日一练(130)

作者头像
小林C语言
发布2019-10-08 15:27:40
2100
发布2019-10-08 15:27:40
举报
读者:有什么好的方法来验对浮点数在 “足够接近” 情况下的等值?

小林:浮点数的定义决定它的绝对精确度会随着其代表的值变化, 所以比较两个浮点数的最好方法就要利用一个精确的阈值。这个阈值和作比较的浮点数值大小有关。

不要用下面的代码:

double a, b;

...

if (a == b) /* 错!*/

要用类似下列的方法:

#include <math.h>

if (fabs(a - b) <= epsilon * fabs(a))

epsilon 被赋为一个选定的值来控制 “接近度”。你也要确定 a 不会为 0。

读者:怎样取整数?

小林:最简单、直接的方法:(int)(x + 0.5)这个方法对于负数并不正常工作。

可以使用一个类似的方法:(int)(x < 0 ? x - 0.5 : x + 0.5)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档