Rohkem
Õige vormingu täpsustaja double jaoks printfis
Milline on õige vormingupunkt "double" printfis? Kas see on %f
või %lf
? Ma usun, et see on %f
, kuid ma ei ole kindel.
Koodinäide
#include <stdio.h>
int main()
{
double d = 1.4;
printf("%lf", d); // Is this wrong?
}
448
3
"%f"
on (või vähemalt üks) õige vorming topelt. Formaatfloat
jaoks ei ole, sest kui sa üritadfloat
iprintf
ile üle anda, muutub seedouble
iks, enne kuiprintf
saab selle1."%lf"
on praeguse standardi kohaselt samuti aktsepteeritav --l
on määratletud, et sellel ei ole mingit mõju, kui sellele järgneb (muu hulgas) konverteerimise spetsiifikaatorf
.Pange tähele, et see on üks koht, kus
printf
-formaatjooned erinevad oluliseltscanf
(jafscanf
jne) formaatjoontest. Väljundi jaoks edastad sa väärtuse, mis tõstetaksefloat'ist
double'-ks, kui see antakse üle variatiivse parameetrina. Sisendiks edastad sa näitaja, mida ei edendata, nii et sa peadscanf
ile ütlema, kas sa tahad lugedafloat
i võidouble
i, nii etscanf
i puhul tähendab%f
, et sa tahad lugedafloat
i ja%lf
, et sa tahad lugedadouble
i (ja, kui see on midagi väärt, siislong double
i puhul kasutad%Lf
i kasprintf
i võiscanf
i puhul).See võib olla
%f
,%g
või%e
, sõltuvalt sellest, kuidas soovite numbri vormindamist. Vaata siin lisateavet. Modifikaatorl
on vajalikscanf
is koosdouble
ga, kuid mitteprintf
is.%Lf
(pange tähele suurt "L") on formaadi täpsustaja pikkade paaride jaoks.Tavalise
double
puhul piisab kas%e
,%E
,%f
,%g
või%G
.