Warum wird printf nicht mit der wissenschaftlichen notation?
Ich verstehe, dass dies ist ein häufiges problem. Aber ich kann nicht finden, eine solide klare Antwort.
16 ^ 54 = 1.0531229167e+65 (this is the result I want)
Wenn ich pow(16,54)
ich bekommen:
105312291668557186697918027683670432318895095400549111254310977536.0
Code ist wie folgt:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void main(){
double public;
double a = 16;
double b = 54;
public = (pow(a,b));
printf("%.21f\n", public);
}
Code ausgeführt mit:
gcc main.c -lm
Was ich falsch mache?
- So wollen Sie die wissenschaftliche Schreibweise?
- Lesen Sie auch über die
g
Formatbezeichner.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mehrere Dinge:
%.10e
format für wissenschaftliche notation mitprintf
für einen Ausdruck mit zehn Ziffern nach dem Punkt,int
von Ihremmain
,public
um den Namen einer Variablen, auf die chance, dass Ihr Programm benötigen würde, um portiert werden zu C++, wopublic
ist ein Schlüsselwort.Hier ist, wie können Sie reparieren Ihr Programm:
Demo auf ideone.
public
ist kein Schlüsselwort in C 🙂 Obwohl seine Verwendung problematisch sein, wenn dieser code jemals bewegt zu C++Haben Sie versucht:
Den
%e
Bezeichner für die wissenschaftliche notation, wie in der Dokumentation beschriebenWenn Sie brauchen, wissenschaftliche notation verwenden müssen Sie die
%e
Formatbezeichner:Auch
public
ist ein keyword in C++ und so wäre es eine gute Idee, um zu vermeiden, dass und alle anderen keywords in diesem Fall muss der code portabel sein.