Float mit Kommazahl multiplizieren?

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;

Woher ich das weiß:Studium / Ausbildung – Fachinformatiker
Anonymer0281 
Fragesteller
 07.07.2020, 20:43

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?

0

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

Woher ich das weiß:Berufserfahrung