The three distinct types
float,
double,
and
long double
can represent floating-point numbers
. The type
double provides at least as much
precision as
float, and the type
long double provides at
least as much precision as
double. The set of values of the type
float is a subset of the set of values of the type
double; the set of values of the type
double is a subset
of the set of values of the type
long double. An implementation may also provide additional types
that represent floating-point values and define them (and cv-qualified versions thereof) to be
extended floating-point types. [
Note 9:
Any additional implementation-specific types representing floating-point values
that are not defined by the implementation to be extended floating-point types
are not considered to be floating-point types, and
this document imposes no requirements on them or
their interactions with floating-point types
. —
end note]
Except as specified in
[basic.extended.fp],
the object and value representations and accuracy of operations
of floating-point types are
implementation-defined
.