在C++中LONG float和double有什么区别?

Nea*_*lon 6 c++ floating-point double

所以我知道浮子和双打的精度差异很大.我明白了.诺言.

但是,在C++中,当调用scanf和printf时,用于指定double的符号是"%lf",这代表long float,对吧?因此,虽然浮点数不如双精度浮点数(一般称为长浮点数,因为它可以通过使用更多项来"更长")具有相同的精度,因此基本上是相同的东西?

只是为了澄清,这就是我的意思:

double number = 3.14159;
printf("The number is %lf", number);
Run Code Online (Sandbox Code Playgroud)

所以我的问题的根源是:长期浮动另一个双重名称?

tao*_*ocp 15

long float在我的知识范围内,没有这种类型.

这篇文章为您提供了有关人们使用lf打印的原因的信息double,printf如果这是您混淆的原因.

由@Jerry Coffin提供:

"%f"是double的(或至少"a")正确格式.float没有格式,因为如果你试图将float传递给printf,它会在printf接收之前被提升为double."%lf"在当前标准下也是可接受的 - 如果后面跟着f转换说明符(其中包括),则l被指定为无效.

所以原因是当人们这样做时:

 printf("The number is %lf", number);
Run Code Online (Sandbox Code Playgroud)

它相当于:

printf("The number is %f", number); //l has no effect when printing double
Run Code Online (Sandbox Code Playgroud)


mil*_*bug 5

printf 说明符名称与类型名称没有任何共同之处。

它们只是以这种方式命名,因此它们简短易记。

浮动->双倍->长双倍

%f->%lf->%Lf

(此外,他们无法命名printfdouble指示符,%d因为该名称已经为int(与octal相比%o)的十进制表示形式保留了)

@taocp的答案说明了为什么可以同时使用with %f%lfwith printf,但是请注意,您不能同时使用with和scanf