Wie teilt man in C zwei ganze Zahlen und erhält ein Double oder Float als Ergebnis?
Richtig. Konvertieren Sie die ganzen Zahlen, bevor Sie die Division durchführen.
Wie teilt man in C zwei ganze Zahlen und erhält ein Double oder Float als Ergebnis?
Sie müssen das eine oder das andere an eine float
o double
.
int x = 1;
int y = 3;
// Before
x / y; // (0!)
// After
((double)x) / y; // (0.33333...)
x / ((double)y); // (0.33333...)
Stellen Sie natürlich sicher, dass Sie die Ergebnis der Abteilung in einem double
o float
! Es nützt Ihnen nichts, wenn Sie das Ergebnis in einem anderen int
.
Bezüglich des Kommentars von @Chad (" [tailsPerField setIntValue:tailsPer]
"):
Übergeben Sie keinen Double oder Float an setIntValue
wenn Sie setDoubleValue
usw. zur Verfügung. Das ist wahrscheinlich das gleiche Problem, wie ich in dem Kommentar erwähnt, wo Sie nicht mit einem expliziten Cast, und Sie erhalten einen ungültigen Wert, weil ein Double als ein int gelesen wird.
Auf meinem System ist zum Beispiel die Datei:
#include <stdio.h>
int main()
{
double x = 3.14;
printf("%d", x);
return 0;
}
Ausgänge:
1374389535
weil versucht wurde, den double als int zu lesen.
Double tp; double x; x = tn; //(tn ist ein int) normalerweise 10 tp = x/fn; // fn ist auch ein int (normalerweise 5), aber ich erhalte immer noch 0
@Chad: Der Code sieht richtig aus. Wie haben Sie festgestellt, dass das Ergebnis Null ist? Machen Sie etwas wie printf("%d", tp)
? Damit wird versucht, den Inhalt eines Double als Int zu drucken, und Sie erhalten nicht die richtigen Ergebnisse. Ihr Compiler hätte Sie warnen müssen, wenn Sie das getan hätten. Für einen Double lautet der Formatstring %lf
.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
2 Stimmen
"Dezimal" ist eine Darstellung (wie "hexadezimal", "oktal", "binär"), die für ganzzahlige oder nicht-ganzzahlige Zahlen gilt. Sie meinen wohl "ein nicht-ganzzahliges Ergebnis erhalten".
0 Stimmen
So erhält man Brüche (rationale Zahlen) mit ganzzahliger Division
printf("%d %d/%d" x/y, x%y, y);
. Sind Sie sicher, dass Sie kein nicht-ganzzahliges Ergebnis wollen?