编译器 clang version 13.0.0
Target: x86_64-pc-windows-msvc
Thread model: posix
其它编译器应该也有类似现象。
就是57,58,59这仨数的结果比较奇怪,是什么原因导致的呢?当然这样写是没有
59*100/100这样好,这样写就没有问题了。
#include <iostream>
using namespace std;
int main() {
cout << int(double(55)/100*100) << endl;
cout << int(float(55)/100*100) << endl;
cout << int(double(56)/100*100) << endl;
cout << int(float(56)/100*100) << endl;
cout << int(double(57)/100*100) << endl;
cout << int(float(57)/100*100) << endl;
cout << int(double(58)/100*100) << endl;
cout << int(float(58)/100*100) << endl;
cout << int(double(59)/100*100) << endl;
cout << int(float(59)/100*100) << endl;
cout << int(double(61)/100*100) << endl;
cout << int(float(61)/100*100) << endl;
return 0;
}
结果:
55
55
56
56
56 //奇怪,为何不是57? 此处用的是double
57
57 //奇怪,为何不是58?此处用的是double
58
59
58 //奇怪,为何不是59?此处用的是float
61
61
--
FROM 119.251.19.*