In C++ (and C), a floating point literal without suffix defaults to double
, while the suffix f
implies a float
. But what is the suffix to get a long double
?
Without knowing, I would define, say,
const long double x = 3.14159265358979323846264338328;
But my worry is that the variable x
contains fewer significant bits of 3.14159265358979323846264338328
than 64, because this is a double
literal. Is this worry justified?
From the C++ Standard
It is interesting to compare with corresponding paragraph of the C Standard. In C there is used term
floating constant
instead offloating literal
in C++:The C suffix is
L
. I'd strongly suspect that it is the same for C++.Your worry is justified. Your literal would first be converted to a
double
, and thus truncated, and then converted back tolong double
.Your concern is valid and you should use a
L
suffix for long double literal.