Wie trimme ich die Dezimalzahl einer Zahl mit clojure oder jython?

8

In clojure oder jython: sage ich habe eine Nummer 4.21312312312312 Wie kann ich eine Nummer mit nur den ersten 2 Dezimalstellen erhalten? Es würde 4.21 für das obige Beispiel zurückgeben. Danke

    
Julio Diaz 21.02.2011, 23:32
quelle

5 Antworten

5

Ich denke, ich habe das nach weiteren Recherchen

%Vor%

sollte 4.21

zurückgeben     
Julio Diaz 21.02.2011, 23:41
quelle
10

Clojure hat eine runde Funktion in clojure.contrib.math - es ist wahrscheinlich am besten, diese zu verwenden, vorausgesetzt, Sie wollen das richtige Verhalten mit all den verschiedenen möglichen numerischen Typen, mit denen Clojure umgehen kann.

In diesem Fall und unter der Annahme, dass Sie das Ergebnis als BigDecimal mit beliebiger Genauigkeit erhalten möchten, können Sie wie folgt eine kleine Hilfsfunktion erstellen:

%Vor%     
mikera 22.02.2011 00:17
quelle
3

Multiplizieren Sie mit 10^numberofdecimals , das Sie möchten, runden Sie und teilen Sie dann. Dies garantiert nicht, dass die Zeichenfolgendarstellung richtig gerundet wird, sollte aber die meiste Zeit funktionieren. Zum Beispiel:

%Vor%

liefert 0.88

    
Phrogz 21.02.2011 23:39
quelle
1

Wenn Sie noch einen Schritt weiter gehen, können Sie die Anzahl der Dezimalstellen parametrisieren:

%Vor%     
user3792193 01.07.2014 03:43
quelle
0

Dieser Thread hat nach einer ähnlichen Abbruchantwort gesucht.

Ich bin mir nicht sicher, ob es eine bessere Lösung gibt, aber ich habe Folgendes herausgefunden.

Bei Nicht-Rundung können Sie multiple by 100 (für 2 Dezimalstellen, 1000 für 3 usw.) in eine Ganzzahl umwandeln und dann durch den ursprünglichen Faktor dividieren, bevor Sie in eine Gleitkommazahl für die numerische Ausgabe konvertieren. Zum Beispiel:

%Vor%     
user3792193 01.07.2014 01:34
quelle

Tags und Links