Float mit Kommazahl multiplizieren?
C#, Unity
Ich habe eine Float-Variabel "a" welche einen Wert von sagen wir mal 110 hat. Ich möchte diese mit einem Wert von 0.1 multiplizieren. Eine Float-Variable ist doch eine Gleitkommazahl. Wieso kann ich dann nicht a = a * 0.1 berechnen?
Fehlermeldung: Double kann nicht in Float impliziert werden.
5 Antworten
Es gibt verschiedene Datentypen, die Zahlen mit Nachkommaanteil darstellen, zwei populäre Datentypen sind float und double. Dabei kann double größere Zahlen darstellen als float, deswegen auch der Fehler, da eine Float-Zahl mit einer Double-Zahl multipliziert größer werden kann als der maximale Wert, den eine Float-Zahl annehmen kann.
Bei der Literalschreibweise ("Zahlen im Code schreiben") gibt es hierbei auch Unterschiede:
a = a * 0.1; // multipliziert a mit einer Double-Zahl
Was du aber möchtest, ist das hier:
a = a * 0.1f; // multipliziert a mit einer Float-Zahl
Mehr dazu kannst du in Microsoft's Floating-point numeric types (C# reference) finden, insbesondere im Abschnitt Real literals.
0.1 wird wohl standardmäßig als Double angesehen.
Wie der Fehler schon sagt kannst du das nicht implizit machen. Das bedeutet, dass du explizit sagen musst welcher Datentyp rauskommen soll.
So könntest du es machen:
a = a * (float)0.1;
Double ist auch eine Gleitkommazahl. Konvertiere dein Float mal mit System.Convert.toDouble(). Nach der Typumwandlung müsste es klappen.
geht schon, du musst es dann halt wieder zu float casten. oder einfach double verwenden?
Kannst das auch wie folgt lösen:
a = a * (float)0.1
Dank. Ich hab noch ein bisschen herumprobiert und bemerkt, dass wenn ich "0.1f" schreibe, es auch funktioniert. Gibt das f an, dass es sich um ein float handeln soll?