C++(Dev-Cpp附赠的Mingw32)的浮点数的坑
昨天改考试题的错是发现标程有锅,造出来的数据是错误的,导致集体不过大样例。。。问题出在这一句话:
1 | double a = dbread(); |
这道题需要把输入的浮点数扩大十倍变成整数处理,请读程序写结果:
1 |
|
猜猜输出是什么(用学校电脑Dev-Cpp编译)?
1 | original value: 10.1 |
惊不惊喜意不意外?精度误差不会这么明显吧!吓得我用自己的电脑(g++.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0
)试了一下:
1 | original value: 10.1 |
怎么又正常了?在Ubuntu 18.04中结果也是正常的。也不会是32位64位的锅,因为标程在64位的评测机上也是错的。那就只可能是这个Mingw32的锅了,这还能解释为什么标程在UVa上能A。Dev-Cpp真是害人不浅啊!
保险起见,以后处理double
转整型是,还是加一个EPS
比较妥当。

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License
Permalink: https://duanyll.com/2019/05/22/Cpp-Float/