Anfängerfrage! Variable rechnet nicht wie vorgesehen

Ich bin neu in der Arduino-Welt und auch generell beim Coden.

Der wertA wird mir immer als 1 ausgegeben wenn das Resultat darunter liegt.
Zuerst dachte ich, dass dies an den Daten Typen liegen sollte, deshalb habe ich vr als int definiert und wertA als float, jedoch funktioniert es immer noch nicht. Ich habe bereits länger recherchiert, jedoch keine Antwort gefunden und langsam geht mir die Geduld aus.

vr = 120;
wertA = 150 / vr;

Ich Entschuldige mich für die Grundlegende Frage und bedanke mich für Antworten.

Mein C++ Buch ist da ganz klar in seinen Erläuterungen!

Das Ziel interessiert den Kompiler nicht.

Du suchst vermutlich

Oder sowas ähnliches, wie wertA = 150e0 / vr;

150/vr wird erst berechnet und danach wertA zugewiesen. Da 150 und vr vom Typ int sind (Ganzzahl), ist das Ergebnis auch int.

Du kannst aber der Rechnung sagen, das du mit Float rechnen willst. Entweder du gibst der Rechnung eine Kommastelle 150.0/vr oder du castest die Variable (wie von Combie gezeigt).

Beispiele, die funktionieren sollten:

wertA = 150.0 / vr;           // eine der beiden Operatoren hat ein Punkt (Komma)
wertA = 150. / vr;            // ein Punkt reicht aus, um den Kompiler zu sagen das es sich um eine Kommazahl handelt
wertA = (float) 150 / vr;     // sagt den Kompiler, das er 150 als Kommazahl behandeln soll
wertA = float (150) / vr;     // auch das sagt den Kompiler, das er 150 als Kommazahl behandeln soll
wertA = 150 / (float) vr;     // sagt den Kompiler, das er vr als Kommazahl behandeln soll
wertA = 150 / float (vr);     // auch das sagt den Kompiler, das er vr als Kommazahl behandeln soll

wertA = float (150 / vr);     // das funktioniert nicht, da das Ergebnis erst berechnet wird, danach zu Float gewandelt wird

was passiert wenn du beide als float definierst?
Ist zwar Platzverschwendung, aber funktioniert es?

Natürlich funktioniert das. Das muss man nicht wirklich von dem Fall unterscheiden wo nur ein Wert ein Float ist

Vielen Dank für die ausführliche Antwort.
Nun funktioniert alles einwandfrei und ein C++ Handbuch ist bestellt :wink:

1 Like