2014-07-16 9 views
8

Nel fare formato stringa di interpolazione in Svezia ho una virgola al posto di un punto durante la creazione di stringhe con i numeri decimali:Interpolazione stringa di Scala con Format, come cambiare la locale?

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 

La mia domanda è: come faccio a impostare il formato in modo che ottengo il risultato 5.01? Mi piacerebbe essere in grado di impostare la locale solo per quella stringa, ad esempio, in modo che non cambi le impostazioni internazionali per l'intero ambiente.

Cheers,

Johan

risposta

10

Utilizzando lo stesso Java library number formatting support accessibili da StringOps enriched String class, è possibile specificare un altro locale solo per quella in uscita:

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

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

Il modo Scala sarebbe quello di utilizzare il string f interpolator (Scala 2.10+), come nella domanda dell'OP, ma sta usando la "locale corrente", senza offrire un modo semplice per impostare quella locale su un'altra differente solo per una chiamata.

+0

Dovrebbe essere 'a', non' $ a' – Exupery

+0

@Exupery a destra, corretto. – VonC

+0

Grazie, c'è un altro modo, intendo ancora usare il bel modo di Scala e non il modo di Java? Saluti, altrimenti ti accontenterò. –

Problemi correlati