【发布时间】:2011-08-11 19:22:49
【问题描述】:
考虑以下几点:
#include <iostream>
#include <cmath>
int main()
{
using std::cout;
using std::endl;
const long double be2 = std::log(2);
cout << std::log(8.0) / be2 << ", " << std::floor(std::log(8.0) / be2)
<< endl;
cout << std::log(8.0L) / be2 << ", " << std::floor(std::log(8.0L) / be2)
<< endl;
}
输出
3, 2
3, 3
为什么输出不同?我在这里错过了什么?
这里也是键盘的链接:http://codepad.org/baLtYrmy
我在 linux 上使用 gcc 4.5,如果这很重要的话。
【问题讨论】:
-
仅供参考,Visual C++ 2010 给出:3、3 和 3、3。顺便说一句,我需要执行“std::log(2.0)”而不是“std::log(2)”来避免歧义。
-
@Branko : VC++ 将
long double视为double的同义词。