Ganzzahldivision immer Null [duplicate]

Lesezeit: 2 Minuten

Ganzzahldivision immer Null duplicate
Safari

Mögliches Duplikat:

Abteilung für C-Programmierung

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

997950cookie-checkGanzzahldivision immer Null [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy