Wie konvertiert man ein Double in das nächste Int?
147
Verwendung Math.round()
, möglicherweise in Verbindung mitMidpointRounding.AwayFromZero
z.B:
Math.Round(1.2) ==> 1
Math.Round(1.5) ==> 2
Math.Round(2.5) ==> 2
Math.Round(2.5, MidpointRounding.AwayFromZero) ==> 3
Convert.ToInt32()
das Gleiche getan oder wird einfach alles nach der Dezimalstelle entfernt?Referenz
Griffe wie folgt abrunden:
quelle
Math.Round
da es bei Bedarf ein int zurückgibt.[0,.5)
- ab und genau die Hälfte der Zahlen -[.5,1)
- auf. Durch das Runden auf gerade gerade werden gerade Zahlen verzerrt, da es(.5,1.5)
auf 1, aber[1.5,2.5]
auf 2Sie können auch die Funktion verwenden:
Je nach Architektur ist es um ein Vielfaches schneller.
quelle
quelle
Ich weiß, dass diese Frage alt ist, aber ich bin auf meiner Suche nach der Antwort auf meine ähnliche Frage darauf gestoßen. Ich dachte, ich würde den sehr nützlichen Tipp teilen, den ich bekommen habe.
Wenn Sie in int konvertieren, erhöhen Sie einfach
.5
Ihren Wert, bevor Sie das Downcasting durchführen. Da Downcastingint
immer auf die niedrigere Zahl fällt (z. B.(int)1.7 == 1
), wenn Ihre Nummer.5
oder höher ist,.5
wird sie durch Hinzufügen in die nächste Zahl aufgenommen, und Ihr Downcastingint
sollte den richtigen Wert zurückgeben. (zB(int)(1.8 + .5) == 2
)quelle
+ 0.5 * Math.Abs(d)
Methoden in anderen Antworten werfen,
OverflowException
wenn der Gleitkommawert außerhalb des Int-Bereichs liegt. https://docs.microsoft.com/en-us/dotnet/api/system.convert.toint32?view=netframework-4.8#System_Convert_ToInt32_System_Single_quelle
Verwenden Sie für Unity Mathf.RoundToInt .
Quelle
quelle
Ich entwickle einen wissenschaftlichen Taschenrechner mit einer Int-Taste. Ich habe festgestellt, dass Folgendes eine einfache, zuverlässige Lösung ist:
Math.Round führt manchmal zu unerwarteten oder unerwünschten Ergebnissen, und die explizite Konvertierung in eine Ganzzahl (über cast oder Convert.ToInt ...) führt häufig zu falschen Werten für Zahlen mit höherer Genauigkeit. Die obige Methode scheint immer zu funktionieren.
quelle