2014-07-16 5 views
8

Wenn in Schweden Format-String-Interpolation zu tun bekomme ich ein Komma anstelle einem Punkt, wenn Strings mit Dezimalzahlen zu erstellen:Scala String-Interpolation mit Format, wie Gebietsschema zu ändern?

scala> val a = 5.010 
a: Double = 5.01 

scala> val a = 5.0101 
a: Double = 5.0101 

scala> f"$a%.2f" 
res0: String = 5,01 

Meine Frage ist, wie kann ich das Format eingestellt, so dass ich das Ergebnis 5.01 bekommen? Ich möchte in der Lage sein, das Gebietsschema nur für diesen String festzulegen, d. H., Damit ich das Gebietsschema für die gesamte Umgebung nicht ändere.

Cheers,

Johan

Antwort

10

Mit der gleichen Java library number formatting support zugänglich von StringOps enriched String class, Sie eine andere locale nur für diesen Ausgang angeben könnte:

"%.2f".formatLocal(java.util.Locale.US, a) 

(wie in "How to convert an Int to a String of a given length with leading zeros to align?")

Die Scala wäre die Verwendung der string f interpolator (Scala 2.10+), wie in der Frage des OP, aber es verwendet das "aktuelle Gebietsschema", ohne eine einfache Möglichkeit anzubieten, das Gebietsschema für einen einzelnen Anruf auf ein anderes zu setzen.

+0

Sollte 'a' sein, nicht' $ a' – Exupery

+0

@exupery rechts, behoben. – VonC

+0

Danke, gibt es noch einen anderen Weg, ich meine immernoch den netten Scala Weg und nicht den Java Weg? Prost, sonst werde ich dich einfach akzeptieren. –

Verwandte Themen