Ich portiere ein .NET Framework 4.7.2 Visual Studio-Projekt auf .NET5.0 und erlebe ein anderes Verhalten von double.ToString, wenn der Wert negativ und nahe Null ist.
Zum Beispiel gibt der Double-Wert -7.1054273576010019E-15 bei der Konvertierung in einen String „-0“ zurück, auch wenn ich ihn vor der Konvertierung mit .NET Framework runde 4.7.2 war das Ergebnis „0“ (gleicher Code).
Dieser Unterschied wird hier besprochen: https://devblogs.microsoft.com/dotnet/f ... rsing-and- formatting-improvements-in-net-core-3-0/, aber ich stimme nicht wirklich zu, dass dies eine Verbesserung ist, wie der Titel besagt, ich glaube, 0 sollte kein Vorzeichen haben, es ist weder eine positive noch eine negative Zahl .
Ich weiß, dass ich einen benutzerdefinierten IFormatProvider oder eine Erweiterungsmethode erstellen und das Double nach Belieben konvertieren kann, aber dies erfordert eine Änderung bei jeder Konvertierung im Code und auch alle Entwickler, die an dem Projekt arbeiten, müssen es im verwenden Zukunft. Meiner Meinung nach ist diese Lösung nicht sehr intuitiv und birgt wahrscheinlich eine Fehlerquelle.
Gibt es eine Möglichkeit, das vorherige Verhalten mit weniger Aufwand wiederherzustellen?
Ist Microsoft dazu bereit? Dies in zukünftigen Versionen von .NET ändern?
BEARBEITEN:
Das Gleiche habe ich in einer Diskussion hier https://github.com/dotnet/runtime/discussions gefragt /54537
Wenn es für jemand anderen hilfreich sein könnte.
Wie vermeide ich „-0“ als double.ToString()-Ergebnis nach der Portierung von .NET Framework 4.7.2 auf .NET5.0? ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post