LUOGU P3954题解(NOIP 2017普及组第一题)

本文介绍了NOIP 2017普及组第一题的解题思路,强调了在使用C++处理浮点数时可能出现的精度问题。由于浮点数赋值时的微小误差,可能导致计算结果不准确。为了避免这种情况,文章提出了两种解决方案:强制类型转换和直接除法运算。
摘要由CSDN通过智能技术生成

题目描述:
牛牛最近学习了C++入门课程,这门课程的总成绩计算方法是:
总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50%
牛牛想知道,这门课程自己最终能得到多少分。

这里写图片描述

NOIP 2017普及组的第一题,很多神犇+大佬一看到此题马上开始切,过了第一个样例点之后直接去切下一道,然而,这里有个小细节需要我们去注意。
我们在用double 或者是 flout 实数类型的时候,赋值时会有微弱的区别,比如说:
double a=0.2;
这个时候,计算机会将其储存为:
a=0.1999999 或者是 a=0.2000001
我们用5*a 的时候,有可能输出0(当答案<1时直接储存为0),也有可能输出1, 所以这是一大坑点。(虽然CCF已经解决)。
但是,我们要避免这种情况的发生,我们可以采用强制类型转换的方法,亦可是直接进行除法运算,即可解决。
代码如下:
1.强制类型转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值