我只是想知道为什么
cout << (1000 < 1000) << endl;
给出0
,而
cout << (1000 < pow(10, 3)) << endl;
给出1
。
答案 0 :(得分:1)
std::pow
不适用于整数类型。如果你提供整数,它会将它们转换为double
(见链接页面上的第7次重载)
调用的结果是double
,恰好有点偏差(因为浮点运算是有损的),足以严格地比较直接转换为{1000
的文字值double
。 {1}}。
请参阅 What Every Computer Scientist Should Know About Floating-Point Arithmetic。