cout&lt;&lt; (1000 <pow(10,3))&lt;&lt; ENDL;给出1

时间:2015-01-14 10:49:10

标签: c++

我只是想知道为什么

cout << (1000 < 1000) << endl;

给出0,而

cout << (1000 < pow(10, 3)) << endl;

给出1

1 个答案:

答案 0 :(得分:1)

std::pow不适用于整数类型。如果你提供整数,它会将它们转换为double(见链接页面上的第7次重载) 调用的结果是double,恰好有点偏差(因为浮点运算是有损的),足以严格地比较直接转换为{1000的文字值double。 {1}}。
请参阅 What Every Computer Scientist Should Know About Floating-Point Arithmetic