Holen Sie sich die Letzten 2 Dezimalstellen Ohne Rundung
In C#, ich versuche, die letzten zwei Dezimalstellen der Doppel OHNE Rundung gestrichen. Ich habe alles versucht, von Math.Floor
zu Math.Truncate
und nichts funktioniert.
Proben von den Ergebnissen, die ich möchte:
1,424.2488298 -> 1,424.24
53.5821 -> 53.58
10,209.2991 -> 10,209.29
Irgendwelche Ideen?
- Wenn du tust Arbeit in dezimal warum bist du dann mit verdoppeln, wenn Sie könnten mit der Dezimalzahl?
- Sie können gehen, um dieses post und finden, was es für Euch passt how-to-code-net.blogspot.ro/2012/09/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Naja, mathematisch ist es einfach:
Verschiebung der Dezimalstelle zwei stellen nach rechts, warf einen int zu kürzen, schieben Sie ihn zurück auf den linken zwei stellen. Möglicherweise gibt es Möglichkeiten in den Rahmen, um es zu tun, aber ich kann nicht sehen jetzt. Man könnte verallgemeinern:
136.2
,136.20
, und136.2000000
. Wenn Sie drucken möchten, mit der eine bestimmte Anzahl von Plätzen angezeigt, dann suchen Sie in string-Formatierung AufrufeString.Format
.decimal
geben, und die Multiplikation wird scheitern, wenn es führen würde, eine Nummer größer als der max-Wert für einedouble
.Mein Rat: aufhören
double
in den ersten Platz. Wenn Sie brauchen, dezimalen Rundung dann sind die Chancen gut, dass Sie sollten mitdecimal
. Was ist Ihre Anwendung?Wenn Sie tun, eine doppelte, Sie können es so machen:
Beachten Sie, dass diese Technik schlägt fehl, wenn der absolute Wert der doppelte größer ist als 792281625142643375935439504, weil die Multiplikation mit 100 wird scheitern. Wenn Sie brauchen, um Werte verarbeiten, die groß ist, dann müssen Sie verwenden spezielle Techniken. (Natürlich, durch die Zeit, die eine doppelte ist, die große, Sie sind weit über Ihre Fähigkeit zu repräsentieren Werte mit zwei stellen nach dem Komma sowieso.)
Allgemeine Lösung:
Dann
Produzieren das gewünschte Ergebnis
x=5.34
.ich.e