single
Числа з Подвійною Точністю
Свайпніть щоб показати меню
Точність типу float (7 десяткових знаків) не завжди є достатньою. Але в C++ існує рішення: double. З точністю у 15 десяткових знаків цей тип значно точніший за float. Синтаксис використання double залишається незмінним:
double.
1double num = 3.14159265359;
За замовчуванням cout виводить числа з плаваючою комою з точністю до 6 значущих цифр. Таким чином, різниця між float і double буде непомітною. Щоб встановити більшу точність, можна знову використати std::cout << std::setprecision(15); (це встановить точність до 15 значущих цифр).
Не забудьте підключити <iomanip>, щоб мати змогу використовувати std::setprecision().
main.cpp
123456789101112131415#include <iostream> #include <iomanip> int main() { float pi_float = 3.14159265358979; double pi_double = 3.14159265358979; std::cout << "float pi: " << pi_float << std::endl; std::cout << "double pi: " << pi_double << std::endl; std::cout << std::setprecision(15); std::cout << "float pi with setprecision: " << pi_float << std::endl; std::cout << "double pi with setprecision: " << pi_double << std::endl; }
Як досягається краща точність у double?
Він просто займає більше пам'яті. Тип float займає 4 байти, а double займає 8 байтів пам'яті.
Існує також тип long double. Його розмір варіюється від 8 байтів (як у double) до 16 байтів. Ви можете перевірити розмір long double на вашій системі за допомогою наступного коду:
sizeof.h
1std::cout << sizeof(long double);
Крім того, слід додати L до значення, яке ви присвоюєте (інакше значення буде присвоєно з точністю типу double). Розгляньте приклад:
double.h
1long double pi = 3.141592653589793238462643L;
Якщо у виведенні з'явилися нулі, переконайтеся, що ви присвоїли значення саме так, як показано вище (1/3., 1/3.L).
Swipe to start coding
Потрібно обчислити (1/3)², використовуючи різні типи даних. Для цього присвойте значення 1/3 змінним типу float, double та long double. Потім виведіть ці числа, помножені самі на себе.
- Ініціалізуйте змінну типу
floatзначенням1/3.; - Ініціалізуйте змінну типу
doubleзначенням1/3.; - Ініціалізуйте змінну типу
long doubleзначенням1/3.L.
примітка:long doubleзаймає 16 байт пам'яті у нашій системі - Встановіть точність виводу до 25 знаків після коми за допомогою
setprecision(25); - Виведіть усі ці значення, помножені самі на себе.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат