Hab die Ursache gefunden:
mit der Migration wird die Buildoption "Prefer32Bit" entfernt und man startet automatisch in 64 bit.
Dadurch wird der float anders gespeichert und man bekommt diesen Fehler.
Dieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
Hallo,
ich erstelle eine C#-Konsolenanwendung mit .Net 4.8 VS 2022 (17.10.3).
In der Main ist folgender Code enthalten:
float f1 = 250000;
float f2 = 1.6f;
var result = f1 * (f2 / 100);
if (result == 4000f)
Console.WriteLine("Ok");
else
Console.WriteLine("fail");
Console.ReadLine();
Als Ergebnis wird "Ok" angezeigt.
Nun nutze ich den Upgrade Assistant (https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.upgradeassistant) um das Projekt auf dem SDK-Stand anzuheben. Also keine Migration nach .NET 8, sondern in .Net 4.8 die Projektdatei zum SDK-Format konvertieren.
Danach führe ich den Code erneut aus und es wird "Fail" ausgegeben.
Ich verstehe, dass das Rechnen mit float immer zu Rundungsproblemen führen kann, aber warum führt das Ändern des Projekt-Formates zu einem anderen Ergebnis und kann man dies wieder "korrigieren"?.
Danke und Gruß Martin
Hab die Ursache gefunden:
mit der Migration wird die Buildoption "Prefer32Bit" entfernt und man startet automatisch in 64 bit.
Dadurch wird der float anders gespeichert und man bekommt diesen Fehler.