Ganzzahlige Division immer Null [duplizieren]

7

wahrscheinlich ist meine Frage sehr einfach und dumm. Ich möchte den Wert einer Division speichern, insbesondere 1 / x , wobei x ein ist ganzzahliger Wert.

%Vor%

Ich versuche es, aber ich bekomme immer 0.000000 ... Ich versuche einen Wert einzugeben, der in x festgelegt ist, zum Beispiel 1/17 , aber immer den gleichen Wert bekommen. Was ist falsch?

    
Safari 26.02.2012, 17:20
quelle

1 Antwort

25

Sie machen Integer Division.

Versuchen Sie Folgendes und es wird wie erwartet funktionieren:

%Vor%

Der Typ von 1 in dem obigen Ausdruck ist int und der Typ von x ist int. Wenn Sie int / int ausführen, erhalten Sie einen int zurück. Sie benötigen mindestens einen der beteiligten Typen als Gleitkommazahl ( float oder double ), damit die Gleitkommadivision ausgeführt werden kann.

Anders als in der Mathematik kann sich die Division in C ++ entweder auf eine abgeschnittene ganzzahlige Division beziehen (was Sie getan haben) oder auf eine Gleitkommadivision (was ich in meinem Beispiel getan habe). Sei vorsichtig damit!

In meinem Beispiel ist explizit double / int -> double .

    
Mike Bailey 26.02.2012, 17:22
quelle