Примите во внимание следующее:
#include
#include
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
И я использую gcc 4.5 на Linux, если это важно.