2014-07-16 26 views
8

İsveç'te biçim dizesi interpolasyon yapıyor ben bir nokta yerine virgül olsun:Scala Biçim ile Dize enterpolasyonu, yerel ayar nasıl değiştirilir? ondalık sayılarla dizeleri oluştururken

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 

Sorum şu, ben sonuç 5.01 olsun böylece biçimini ayarlamak nasıl? Yerel ayarı yalnızca bu String için ayarlayabilmek istiyorum, yani tüm ortamın yerel ayarını değiştirmem.

Alkış,

Johan StringOps enriched String class aynı Java library number formatting support erişilebilir , sadece o çıkış için başka yerel belirleyebildiğinde kullanma

cevap

10

:

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

("How to convert an Int to a String of a given length with leading zeros to align?" bölümünde açıklandığı gibi)

Scala yolu,'ü kullanmak olabilir(Scala 2.10+), OP'nin sorusu gibi, ancak o, "tek yerel arama" yı kullanmadan, bu yerel ayarı yalnızca bir çağrıya ayarlamak için kolay bir yol sunmadan kullanıyor.

+0

"a" değil, "$ a" olmalıdır – Exupery

+0

@Exupery doğru, düzeltildi. – VonC

+0

Teşekkür ederim, başka bir yol var mı, demek istediğim hala güzel bir Scala yolu kullanıyor ve Java yolunu değil? Şerefe, aksi takdirde seni kabul ederim. –