Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Min() zweier Gleitkommazahlen zurückgeben
Sw4t
myCSharp.de - Member



Dabei seit:
Beiträge: 16

Themenstarter:

Min() zweier Gleitkommazahlen zurückgeben

beantworten | zitieren | melden


private float Min(float a, float b)
{
    //return a < b ? a : b;
    if (a < b)
        return (float)a;
    return (float)b;
}

float test = Min(8 / 7, 6 / 5); // Debugger: 1.0 (float)

Wieso rundet C# hier den Rückgabewert ab bzw. wieso liefert es mir nicht einfach 1.1428 (ca. 8/7)?
Wie bekomme ich es wie gewünscht hin?
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1.802
Herkunft: Düsseldorf

beantworten | zitieren | melden

Du übergibst "8/7" und "6/5", also 1 und 1. Überrascht?

5, 6, 7 und 8 sind Int-Werte, wenn Du mit denen rechnest, kommt auch Int raus und Int erlaubt keine Nachkommastellen.

Du musst bei jeder Division mit einer Gleitkommazahl rechnen, damit der Compiler das auch weiß.

Heißt:


float test = Min(8F / 7F, 6F / 5F); 

Mit dem F sagst Du, dass die Zahl ein float ist.
Du kannst aber auch casten und wenn Du Variablen nutzt, die schon float sind, brauchst Du es natürlich auch nicht.
private Nachricht | Beiträge des Benutzers
Sw4t
myCSharp.de - Member



Dabei seit:
Beiträge: 16

Themenstarter:

beantworten | zitieren | melden

Oh man. Float ist ein lästiger Datentyp. Danke dir
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.839
Herkunft: Waidring

beantworten | zitieren | melden

Hallo Sw4t,

für Komplettheit: Math.Min ist eine Methode in .NET für das Minimum von 2 Werten.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1.802
Herkunft: Düsseldorf

beantworten | zitieren | melden

Zitat von Sw4t
Oh man. Float ist ein lästiger Datentyp. Danke dir
Hat nix mit Float zu tun, gilt auch für die anderen Gleitkommazahlen.

Der Compiler sieht ja nur "Zahl" und wenn Du keinen Typ definierst, ist "Zahl" eben ein Int.
Und dass bei Int die Nachkommastellen abgeschnitten werden, ist technisch notwendig und auch gut so.
private Nachricht | Beiträge des Benutzers
Sw4t
myCSharp.de - Member



Dabei seit:
Beiträge: 16

Themenstarter:

beantworten | zitieren | melden

Zitat von "Palladin007"
Der Compiler sieht ja nur "Zahl" und wenn Du keinen Typ definierst, ist "Zahl" eben ein Int.
Danke, das wusste ich bislang noch nicht.
Zitat von "gfoidl"
für Komplettheit: Math.Min ist eine Methode in .NET für das Minimum von 2 Werten.
Hallo gfoidl,
Mit Math.Min() hatte ich das Problem, dass es mir ständig einen Integer lieferte. Nun weiss ich auch, warum.
private Nachricht | Beiträge des Benutzers