разные значения функции std :: floor для аргументов с одинаковым значением, но разными типами

Примите во внимание следующее:

#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, если это важно.

5
задан BЈовић 11 August 2011 в 19:25
поделиться