20 Stimmen

Kann ich in C eine Gleitkommazahl mit einer Ganzzahl vergleichen und addieren?

Kann ich eine Gleitkommazahl mit einer ganzen Zahl vergleichen?

Wird der Float im Code mit ganzen Zahlen verglichen?

float f;     // f has a saved predetermined floating-point value to it  
if (f >=100){__asm__reset...etc}

Könnte ich auch...

float f;
int x = 100;
x+=f;

Ich muss den Gleitkommawert verwenden f die von einem Lage-Referenzsystem empfangen werden, um einen Positionswert anzupassen x der ein PWM-Signal zur Korrektur der Lage steuert.

1voto

Kim Reece Punkte 1232

Ja, man kann sie vergleichen, man kann mit ihnen rechnen, ohne sich groß Gedanken darüber zu machen, was was ist, in den meisten Fällen. Aber nur in den meisten. Das große Problem ist, dass man prüfen kann, ob f<i usw., sollte aber nicht nach f==i . Ein Integer und ein Float, die vom Wert her identisch sein "sollten", sind nicht unbedingt identisch.

0voto

Promit Punkte 3496

Ja, das wird gut funktionieren. Insbesondere wird die int in Float für die Zwecke der Konvertierung umgewandelt werden. In der zweiten müssen Sie auf int gießen, aber es sollte sonst in Ordnung sein.

0voto

Charlie Martin Punkte 106684

Ja, und manchmal macht es genau das, was Sie erwarten.

Wie bereits erwähnt, funktioniert der Vergleich von z. B. 1.0 == 1, da die Ganzzahl 1 in den Typ double (nicht float ) vor dem Vergleich.

Bei anderen Vergleichen ist dies jedoch nicht der Fall.

0voto

Lightness1024 Punkte 76

Die Notation 1.0 ist vom Typ double, so dass der Vergleich nach den Regeln für die Typumwandlung wie gesagt in double erfolgt. 1.f oder 1.0f ist vom Typ float und der Vergleich wäre in float durchgeführt worden. Und es hätte auch funktioniert, da wir gesagt haben, dass 2^23 erste ganze Zahlen in einem Float darstellbar sind.

CodeJaeger.com

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.

Powered by:

X