objective float-Werte

7

Warum können wir das Divisionsergebnis zweier Ganzzahlen nicht in der float-Variablen speichern?

%Vor%

es gibt t = 0!

ich auch

%Vor%

es gibt t = 0!

aber als ich es tat

%Vor%

gibt das richtige Ergebnis. Warum so?

    
Maulik 08.04.2011, 10:57
quelle

5 Antworten

22

Der Grund, warum float temp = b/a; 0 ergibt, während float temp = (float)b/a; 0.5 ergibt, ist der, dass der Compiler den Ausgabetyp der Divisionsoperation auf der Grundlage der Typen der Operanden bestimmt, nicht des Zielspeichertyps. Einfach gesagt:

%Vor%

Wenn du float temp = b/a; machst, machst du das in der Ganzzahldivision von b und a und speichert dann die resultierende Ganzzahl (0 in deinem Beispiel) in eine Variable vom Typ float . Wenn Sie den Wert in Fließkommawerte umwandeln, haben Sie die gesuchten Informationen bereits verloren (vorausgesetzt, Sie wollten eine Gleitkommadivision durchführen), und die Konvertierung bringt sie nicht zurück.

Um das gewünschte Ergebnis zu erhalten (vorausgesetzt, Sie möchten eine Gleitkommavariation durchführen), müssen Sie mindestens einen der Operanden in float vor Sie umsetzen teilen.

    
aroth 08.04.2011, 11:06
quelle
3
%Vor%     
Rakesh Bhatt 08.04.2011 10:58
quelle
3

Seine ganzzahlige Division - 50/100 ist 0, der Rest (Modul kann verwendet werden) ist 50.

Du musst Floats verwenden, egal ob du von int kommst oder mit ihnen anfängst, liegt ganz bei dir.

    
Josh 08.04.2011 11:01
quelle
3

Die folgende Anweisung bedeutet, dass Sie Ihre ganzzahligen Werte in float umwandeln, bevor Sie die Operation anstoßen

%Vor%

So könnte man sehen wie folgt

%Vor%

dann

%Vor%

Und Ergebnis

%Vor%     
Jhaliya 08.04.2011 11:06
quelle
2

In Ihrem Fall ist 50/100 0,2. Durch Erhalten des Ergebnisses für zwei ganze Zahlen wird das Ergebnis auch in ganzzahliger Form sein, so dass es den Dezimalteil abschneidet, der Ihnen 0 alleine gibt. Aber im Falle des Floatens wird es als eine schwimmende Division betrachtet, so dass Sie 0,2 erhalten     

visakh7 08.04.2011 11:04
quelle

Tags und Links