RT,我写作业划水时测试的,可能测错,如果测错的话见谅。
首先,很多初学者都质疑为什么本题为什么不能用double,一般都直接回答看题目。我认为这种行为及其的误人子弟且不负责任(我也这么干过,向被我误导的同学道歉)
其次,不知道现在讨论区传的输入数据是怎么来的。我利用RE的返回值信息测试出 #10的输入为-12.6505,并不存在卡float精度的问题。话说,为了让OIer强制使用float而故意卡掉float精度的做法本来就很滑稽,不清楚为什么那么多人相信了
下面就引出了本帖最关键的问题:
printf和cout貌似对负数的四舍五入均存在一些 bug
由于我没时间具体测试了,所以发帖询问大家的看法。
放一下我的测试结果(printf和cout的结果相同):
float:-12.651
double:-12.650
如果不是printf或cout的问题,那我个人猜想的结果可能与主流观点相反:本题不是卡掉了float的精度,而是卡掉了double的精度。