C++(およびC)では、接尾辞なしの浮動小数点リテラルはデフォルトでdouble
になりますが、接尾辞f
はfloat
を意味します。しかし、long double
を取得する接尾辞は何ですか?
知らずに、私は、たとえば
const long double x = 3.14159265358979323846264338328;
しかし、心配しているのは、変数x
がdouble
リテラルであるため、3.14159265358979323846264338328
の有効ビットが64より少ないことです。この心配は正当化されますか?
C++標準から
浮動リテラルの型は、接尾辞で明示的に指定されない限り、doubleです。接尾辞fとFはfloatを指定し、接尾辞lとLはlong doubleを指定します。
C標準の対応する段落と比較するのは興味深いです。 Cには、使用される用語floating constant
の代わりに floating literal
C++の場合:
4接尾辞のない浮動定数の型はdoubleです。末尾に文字fまたはFが付いている場合、タイプはfloatです。文字lまたはLが末尾に付いている場合、タイプはlong doubleです
CサフィックスはL
です。 C++でも同じだと強く疑います。
あなたの心配は正当化されます。リテラルは最初にdouble
に変換され、したがって切り捨てられ、次にlong double
に変換されます。
あなたの懸念は有効であり、長い二重リテラルにはL
接尾辞を使用する必要があります。