使用Format Scala字符串插值,如何更改语言环境?

时间:2014-07-16 11:49:14

标签: string scala string-interpolation

在瑞典进行格式字符串插值时,在创建带十进制数的字符串时,我得到一个逗号而不是一个点:

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

我的问题是,如何设置格式以便获得结果5.01?我希望能够仅为该String设置语言环境,即我不会更改整个环境的语言环境。

干杯,

约翰

2 个答案:

答案 0 :(得分:12)

使用相同的Java library number formatting support 可访问 从StringOps enriched String class开始,您可以为该输出指定另一个区域设置:

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

(如“How to convert an Int to a String of a given length with leading zeros to align?”中所述)

Scala的方式是使用string f interpolator(Scala 2.10 +),就像OP的问题一样,但它使用的是“当前语言环境”,而没有提供一种简单的方法来将该语言环境设置为不同的一个只是一个电话。

答案 1 :(得分:0)

Locale.setDefault(Locale.US)
println(f"$a%.2f")