Задать вопрос
@avion123678

Точность типов переменных с плавающей точкой?

Здравствуйте, почему переменная типа long double хранит данные с такой же точностью, как и переменная типа double?

#include <iostream>
#include <iomanip>

int main()
{
    long double a = 1.4142135623730950488;
    double b = 1.4142135623730950488;

    std::cout << std::setprecision(20);
    std::cout << "1.4142135623730950488\n";
    std::cout << "long double: " << a << "\n";
    std::cout << "double: " << b;

    return 0;
}


Результат:
1.4142135623730950488
long double: 1.4142135623730951455
double:      1.4142135623730951455

Отличия от изначального числа и у long double и у double начинаются после 1.***095
  • Вопрос задан
  • 131 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
long double a = 1.4142135623730950488;
double b = 1.4142135623730950488;

почему переменная типа long double хранит данные с такой же точностью, как и переменная типа double?

Потому что ты инициализировал их одинаковыми значениями типа double. Попробуй сделать так:
long double a = 1.4142135623730950488L;
См:
The type of a floating literal is double unless explicitly specified by a suffix.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AngelicCare
До ххх-го года (говорят, 745 до Р/х Сирия обрела свободу от Израиля) все претензии на вычислительную избыточность фактической скорости вычислений гасились и это было всех основной задачей , условно, в рамках ядерно... й войны. (Й была раньше, имя Ассирийского императора, при котором) Отсюда что если избыток деструктивности - лить на Москву. Извините за экскурс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы