Несколько несложных вопросов по C++

Тема в разделе "Общие вопросы по С и С++", создана пользователем Guest, 12 дек 2003.

Статус темы:
Закрыта.
  1. Guest

    Guest Гость

    Несколько несложных вопросов по C++
    Есть такой код:
    // Задание 1 для float
    const float af = 1000,
    const float bf = 0.0001;

    float cf = af+bf;
    float df = pow(cf, 2);
    float ef = pow(af, 2);
    float ff = 2*af*bf;
    float gf = pow(bf, 2);

    float hf = df-(ef+ff); //cout << hf << endl;

    float resultf = hf/gf;
    cout << "Result (float) " << resultf << endl;

    // Задание 1 для double
    const double ad = 1000,
    const double bd = 0.0001;

    double cd = ad+bd;
    double dd = pow(cd, 2);
    double ed = pow(ad, 2);
    double fd = 2*ad*bd;
    double gd = pow(bd, 2);

    double hd = dd-(ed+fd); //cout << hd << endl;

    double resultd = hd/gd;
    cout << "Result (double) " << resultd << endl;
    Как объяснить почему для float и double получаются разные результаты при вычислении одного и того же выражения?

    Как вывести на экран resultf в форме без "e" (т. е. в номальной десятичной 2.0003)?

    В теле цикла есть такая строка
    cout << "X=" << x << " SN=" << sn << " SE=" << se << " Y=" << pow(3, x) << endl;
    Как сделать чтобы столбики были ровными?
     
  2. kagor

    kagor Гость

    printf ("Result (float) %f\n", resultf);
     
  3. Гость

    mmiichae
    Объяснение лежит в стандартах IEEE, с которыми видимо Вы не очень знакомы :(
    Вот выдержка из MSDN:
    Вот... В Вашем примере происходит банальное переполнение мантиссы у float. Однако не трудно произвести то же самое и для double:
    Вместо ожидаемой 1 получаем чудеса! А казалось бы, просто изменили степень на порядок в большую/меньшую сторону.
     
Загрузка...
Похожие Темы - Несколько несложных вопросов
  1. lionk
    Ответов:
    8
    Просмотров:
    155
  2. mrktwn1
    Ответов:
    0
    Просмотров:
    71
  3. M1shop
    Ответов:
    0
    Просмотров:
    373
  4. lionk
    Ответов:
    1
    Просмотров:
    594
  5. JohnLemon
    Ответов:
    6
    Просмотров:
    1.180
Статус темы:
Закрыта.

Поделиться этой страницей