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)
printf 说明符名称与类型名称没有任何共同之处。
它们只是以这种方式命名,因此它们简短易记。
浮动->双倍->长双倍
%f->%lf->%Lf
(此外,他们无法命名printfdouble指示符,%d因为该名称已经为int(与octal相比%o)的十进制表示形式保留了)
@taocp的答案说明了为什么可以同时使用with %f和%lfwith printf,但是请注意,您不能同时使用with和scanf
| 归档时间: |
|
| 查看次数: |
34648 次 |
| 最近记录: |