浮点数OJ注意事项

我们在一些OJ网站刷题时,有时候一些题目的运算结果是浮点数,要求精确到后n位
对于这类型的题,由于浮点数存储的精度问题,有一些细节的地方没顾及到的话,往往就会出现明明运算过程没问题,但就是因为小数点后的一些位与测试用例的预期输出不符,从而无法通过
以下列出几点需要注意的点,希望对大家有所帮助

1、精度

对于结果为浮点数的OJ,尽量使用高精度数据类型,如double、long double,除非题目明确给出参数类型

2、次方运算

在浮点数OJ中,涉及到次方的运算,不应写为a*a这种形式,而应当写为pow(a,2.0),否则小数点后的部分可能与OJ答案不一致,从刷题经验来看,OJ网站更希望大家使用pow函数来计算某一个数的n次方

3、浮点数判断相等

由于浮点数的不精确表示这个原因,我们对判断浮点类型变量时,不能写"a == 0.3"这种形式
两个浮点数变量a,b可能都等于0.3,但是他们在好几位之后的地方并不一定相同,
如0.300000001,0.300000002
所以也不能写a==b
而应当写fabs(a-0.3)<0.000xxx1,fabs(a-b)<0.000xxx1
这里的0.000xxx1表示我们可接受的精度范围,当二者的差的绝对值小于我们允许的精度范围,那么我们就可以说二者是相等的

  • 20
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值