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?
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.
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Oh man. Float ist ein lästiger Datentyp. Danke dir 👍
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!"
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.
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Der Compiler sieht ja nur "Zahl" und wenn Du keinen Typ definierst, ist "Zahl" eben ein Int.
Danke, das wusste ich bislang noch nicht. 👍
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. 😁