【发布时间】:2016-09-07 10:51:29
【问题描述】:
我正在尝试编写一个应如下所示的格式化字符串:
一瓶伏特加需要 x.yz 卢布。
其中 x.yz 是一个任意的 Double 值,四舍五入为 2 个小数点。
为此,我使用带有 printf 语法的字符串插值:
val cost = 2.56
val str = f"A bottle of vodka costs $cost%.2f rubles."
不幸的是,在使用俄语语言环境的机器上,上面的 sn-p 产生的结果与我想要达到的结果有点不同:
str: String = 一瓶伏特加要花费 2,56 卢布。
这是可以理解的(f 插值器使用的 Java 格式化程序应用特定于语言环境的小数分隔符,如 here 所述),但我仍然想使用小数点而不是逗号。
我知道一种可能的解决方法——使用 formatLocal() 方法并明确设置区域设置:
val str = "A bottle of vodka costs %.2f rubles.".formatLocal(java.util.Locale.US, cost)
但它并没有让我觉得它是一种特别 Scalaesque 的做事方式。
所以我的问题是:是否可以仅使用 f 插值来格式化具有特定小数分隔符的字符串,而无需任何无关的方法调用?
【问题讨论】:
-
@WiktorStribiżew 谢谢!但是请注意,我的问题仅限于使用任意小数分隔符;我对更改语言环境不感兴趣。
标签: string scala string-interpolation scala-2.11