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).
Проведіть, щоб почати кодувати
Потрібно обчислити (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
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат