Conteúdo do Curso
C++ Data Types
C++ Data Types
Double-Precision Numbers
The precision of float
(7 decimal digits) is not always enough. But C++ has a solution: double
. With a precision of 15 decimal digits, it is much more accurate than float
. The syntax of using double is the same as always:
double
double num = 3.14159265359;
By default, cout
prints floating-point numbers with a precision of 6 significant digits. That way, you won't see a difference between float
and double
. To set a larger precision, we can use std::cout << std::setprecision(15);
again (this will set the precision to 15 significant digits).
Don't forget to include <iomanip>
to be able to use std::setprecision()
.
main
#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; }
How is better precision achieved in double
?
It just takes up more memory. A float
type takes up 4 bytes, and a double
takes up 8 bytes of memory.
There also is a long double
type. Its size ranges from 8 bytes (just like a double) to 16 bytes. You can check the size of the long double
on your system by using the following code:
sizeof
std::cout << sizeof(long double);
Additionally, you should add L
to a value you are assigning (otherwise, the value will be assigned with the precision of double
). Look at the example:
double
long double pi = 3.141592653589793238462643L;
Note
If you got zeros in the output, make sure you assigned the values exactly like shown above (
1/3.
,1/3.L
).
Swipe to show code editor
You need to calculate (1/3)² using different data types. For that, assign the value of 1/3 to the float
, double
, and long double
typed variables. Then print those numbers multiplied by themselves.
- Initialize a
float
variable with the value1/3.
; - Initialize a
double
variable with the value1/3.
; - Initialize a
long double
variable with the value1/3.L
.
note:long double
takes up 16 bytes of memory on our system - Set the precision of output to 25 decimals with
setprecision(25)
; - Print all those values multiplied by themselves.
Obrigado pelo seu feedback!
Double-Precision Numbers
The precision of float
(7 decimal digits) is not always enough. But C++ has a solution: double
. With a precision of 15 decimal digits, it is much more accurate than float
. The syntax of using double is the same as always:
double
double num = 3.14159265359;
By default, cout
prints floating-point numbers with a precision of 6 significant digits. That way, you won't see a difference between float
and double
. To set a larger precision, we can use std::cout << std::setprecision(15);
again (this will set the precision to 15 significant digits).
Don't forget to include <iomanip>
to be able to use std::setprecision()
.
main
#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; }
How is better precision achieved in double
?
It just takes up more memory. A float
type takes up 4 bytes, and a double
takes up 8 bytes of memory.
There also is a long double
type. Its size ranges from 8 bytes (just like a double) to 16 bytes. You can check the size of the long double
on your system by using the following code:
sizeof
std::cout << sizeof(long double);
Additionally, you should add L
to a value you are assigning (otherwise, the value will be assigned with the precision of double
). Look at the example:
double
long double pi = 3.141592653589793238462643L;
Note
If you got zeros in the output, make sure you assigned the values exactly like shown above (
1/3.
,1/3.L
).
Swipe to show code editor
You need to calculate (1/3)² using different data types. For that, assign the value of 1/3 to the float
, double
, and long double
typed variables. Then print those numbers multiplied by themselves.
- Initialize a
float
variable with the value1/3.
; - Initialize a
double
variable with the value1/3.
; - Initialize a
long double
variable with the value1/3.L
.
note:long double
takes up 16 bytes of memory on our system - Set the precision of output to 25 decimals with
setprecision(25)
; - Print all those values multiplied by themselves.
Obrigado pelo seu feedback!