Wahrscheinlich ist meine Frage sehr einfach und dumm. Ich möchte insbesondere den Wert einer Division speichern 1 / x wo x ist ein ganzzahliger Wert.
int x = 17;
double result = 1/x;
Ich versuche es, aber ich bekomme es immer hin 0.000000 ... Ich versuche zum Beispiel einen festen Wert in x einzugeben 1/17 bekomme aber immer den gleichen Wert.. was ist falsch?
C++. Die Division von 1 durch eine beliebige Zahl ergibt 0
– phuklv
17. Juni 2018 um 12:47 Uhr
Du machst eine ganzzahlige Division.
Versuchen Sie Folgendes und es funktioniert wie erwartet:
int x = 17;
double result = 1.0 / x;
Die Art der 1 in dem Ausdruck, den Sie oben haben, ist intund die Art von x ist int. Wenn Sie das tun int / int, erhalten Sie ein int zurück. Mindestens einer der beteiligten Typen muss Gleitkomma sein (float oder double), damit eine Gleitkommadivision auftritt.
Anders als in der Mathematik kann sich die Division in C++ entweder auf eine abgeschnittene Integer-Division (was Sie getan haben) oder eine Fließkomma-Division (was ich in meinem Beispiel getan habe) beziehen. Achten Sie darauf!
In meinem Beispiel ist explizit, was wir haben double / int -> double.
Oder um es deutlich zu machen: double result = (double)1 / x;
– Niemand bewegt sich von SE weg
26. Februar 2012 um 17:23 Uhr
@Niemand Du meinst also double result = 1.0 / x;? Nun, der Compiler wird das für Sie tun, aber er könnte Sie auslachen, weil Sie selbst kein doppeltes Literal erkennen.
– Christian Rau
26. Februar 2012 um 17:53 Uhr
@Christian Rau Es war eher ein didaktisches Beispiel, um den automatischen Typ besser sichtbar zu machen. Als Programmierer würde ich natürlich immer schreiben 1.0 weil es viel kürzer ist.
– Niemand bewegt sich von SE weg
26. Februar 2012 um 17:55 Uhr
Bei POD-Typen werden alle mathematischen Operationen an Parametern von durchgeführt dieselbe Art. Der Ergebnistyp ist der gleiche wie bei den Eingabeparametern. Wenn die Eingabeparameter keinen übereinstimmenden Typ haben, wird ein Parameter auf den Typ des anderen hochgestuft.
– Martin York
26. Februar 2012 um 19:16 Uhr
9979500cookie-checkGanzzahldivision immer Null [duplicate]yes
C++. Die Division von 1 durch eine beliebige Zahl ergibt 0
– phuklv
17. Juni 2018 um 12:47 Uhr