W języku C++ liczby zmiennoprzecinkowe są używane do reprezentowania liczb, które mają część dziesiętną. Najczęściej stosowane typy do przechowywania liczb zmiennoprzecinkowych to float
, double
oraz long double
. Każdy z tych typów różni się precyzją oraz ilością pamięci, jaką zajmuje w systemie.
float
– zajmuje zazwyczaj 4 bajty pamięci i oferuje precyzję do około 7 cyfr po przecinku.double
– zajmuje zazwyczaj 8 bajtów pamięci i oferuje precyzję do około 15 cyfr po przecinku. Jest najczęściej używanym typem zmiennoprzecinkowym.long double
– zajmuje zazwyczaj 10, 12 lub 16 bajtów pamięci (w zależności od systemu) i zapewnia jeszcze większą precyzję.
W poniższym przykładzie napiszemy program, który pokaże, jak deklarować zmienne zmiennoprzecinkowe w C++ i jak na nich operować.
Przykład kodu – Typy zmiennoprzecinkowe w C++
Stwórz plik o nazwie floating_point.cpp
i wklej do niego poniższy kod:
// Importujemy bibliotekę iostream, która pozwala na operacje wejścia/wyjścia
#include <iostream>
// Główna funkcja programu
int main() {
// Deklarujemy zmienną typu float i przypisujemy jej wartość 3.14
float pi_float = 3.14f; // Sufiks 'f' oznacza, że jest to typ float
// Deklarujemy zmienną typu double i przypisujemy jej wartość 3.14159265358979
double pi_double = 3.14159265358979;
// Deklarujemy zmienną typu long double i przypisujemy jej wartość 3.14159265358979323846
long double pi_long_double = 3.14159265358979323846L; // Sufiks 'L' oznacza, że jest to typ long double
// Wyświetlamy wartości zmiennych
std::cout << "Wartosc pi jako float: " << pi_float << std::endl; // Wyświetla wartość zmiennej 'pi_float'
std::cout << "Wartosc pi jako double: " << pi_double << std::endl; // Wyświetla wartość zmiennej 'pi_double'
std::cout << "Wartosc pi jako long double: " << pi_long_double << std::endl; // Wyświetla wartość zmiennej 'pi_long_double'
// Operacje arytmetyczne na liczbach zmiennoprzecinkowych
float a = 5.75f; // Deklaracja i inicjalizacja zmiennej typu float
float b = 2.5f; // Deklaracja i inicjalizacja drugiej zmiennej typu float
float sum = a + b; // Dodawanie
float difference = a - b; // Odejmowanie
float product = a * b; // Mnożenie
float quotient = a / b; // Dzielenie
// Wyświetlanie wyników operacji
std::cout << "Suma: " << sum << std::endl; // Wyświetla wynik dodawania
std::cout << "Różnica: " << difference << std::endl; // Wyświetla wynik odejmowania
std::cout << "Iloczyn: " << product << std::endl; // Wyświetla wynik mnożenia
std::cout << "Iloraz: " << quotient << std::endl; // Wyświetla wynik dzielenia
// Zwracamy 0, co oznacza, że program zakończył się pomyślnie
return 0;
}
Wyjaśnienie
Ten program pokazuje, jak zadeklarować zmienne zmiennoprzecinkowe różnych typów (float
, double
i long double
) oraz jak na nich operować.
- Najpierw program deklaruje trzy zmienne (
pi_float
,pi_double
ipi_long_double
) i przypisuje im różne wartości liczby Pi. Każda z tych zmiennych jest innego typu:float
,double
ilong double
. - Następnie wyświetla ich wartości, co pokazuje różnicę w precyzji, z jaką różne typy zmiennoprzecinkowe przechowują liczby.
- W dalszej części program wykonuje podstawowe operacje arytmetyczne na liczbach zmiennoprzecinkowych (
a
ib
): dodawanie, odejmowanie, mnożenie oraz dzielenie. Wyniki tych operacji są wyświetlane na ekranie.
Warto zauważyć, że w przypadku deklarowania zmiennych typu float
i long double
dodaliśmy odpowiednio sufiksy f
i L
, które wskazują, że mamy do czynienia z tymi konkretnymi typami zmiennoprzecinkowymi. Jeśli nie użyjemy tych sufiksów, kompilator domyślnie zinterpretuje liczbę jako double
.