2016-07-12 1 views
0

Ich bin neu zu stackoverflow so leid für meine unangemessen lange Frage oder Format der Frage.Wie bekomme ich Antworten von Berechnungen in Form von Exponenten (z. B. -6.6.7e-11) in C Sprache

Ich habe dieses Programm versucht, Gravitationskraft zu berechnen. Bisher habe ich diese Dinge ausprobiert und sie scheinen nicht zu funktionieren.

#include <stdio.h> 
#include <conio.h> 
#include <math.h> 
#define G 6.67e-11 


main() 

{ 

long double r; 

long double m1,m2,F; 
printf("Enter m1:-"); 
scanf("%Lf",&m1); 
printf("Enter m2:-"); 
scanf("%Lf",&m2); 
printf("Enter distance between m1 and m2:-"); 
scanf("%Lf",&r); 
F=(G*m1*m2)/(r*r); 
printf("The force is:-%Le",F); 

return; 

} 

Jetzt habe ich viele Variationen in der letzten Zeile des Codes ausprobiert.

wie anstelle von% e habe ich% Lf versucht, wie ich definiert habe, wie lange doppelt. auch wenn ich den Code wie oben ausführen und geben Sie die folgenden Eingaben

dh.

Enter m1:10 

Enter m2:2 

Enter m3:10 

Antwort als

force is:1.327e-317 

statt 1.334e-11.

was ich in Rechner berechnet.

und wenn es ein Problem mit #define gibt, erläutern Sie bitte, wie ich Konstanten in Exponentialform definieren und sie für ähnliche Berechnungen verwenden kann.

bitte helfen.

Antwort

0

Sie verwenden den falschen Formatbezeichner, um das Ergebnis zu drucken.

F ist vom Typ long double, aber %e wird für double verwendet. Sie müssen %Le verwenden.

Die Verwendung des falschen Formatbezeichners führt zu undefined behavior.

Außerdem müssen Sie F, nicht &F für printf übergeben.

+0

Sir Ich habe gerade versucht, wie Sie vorgeschlagen, aber leider sind die ans kommt noch aus 1.327e-317 sein. – Samarth

+0

@Samarth Haben Sie den Formatbezeichner * und * das '&' vor 'F' entfernt? – dbush

+0

ja das habe ich gemacht. Und wie du schon sagtest, habe ich den Datentyp auf double geändert und das% e beibehalten und das Programm ausgeführt. aber die Ausgabe ist # QNAN0e + 000 – Samarth

2

scanf nimmt die Adresse der Variablen, um in sie schreiben zu können, aber printf übernimmt den Wert als Parameter. Da printf eine Funktion für variable Argumente ist, kann der Parametertyp nicht überprüft werden, sodass Sie die richtigen Typen übergeben müssen.

tun, dass statt:

printf("The force is:-%e",F); 

ich den Link gefolgt sind, und fügte hinzu, dass Schalter funktioniert für mich auf Fenster:

-D__USE_MINGW_ANSI_STDIO 

The force is:-1.334000e-011 
+0

ja danke ich entfernte das kaufmännische Zeichen. und führte den Code mit Double als Datentyp aus. und% e im letzten printf, aber die ausgegebene Ausgabe ist # QNAN0e + 000 – Samarth

Verwandte Themen