我正在尝试编写一个看起来像这样的格式化字符串:
一瓶伏特加花费x.yz卢布。
其中x.yz是一个任意的Double值,舍入为2个小数符号。
为实现这一目标,我使用字符串插值和printf语法:
val cost = 2.56
val str = f"A bottle of vodka costs $cost%.2f rubles."
不幸的是,在具有俄语语言环境的计算机上,上面的代码段会产生与我想要实现的结果略有不同的结果:
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插值格式化具有特定小数分隔符的字符串,而无需任何无关的方法调用?
答案 0 :(得分:3)
目前f
插补器不支持语言环境或自定义分隔符(请参阅macro_StringInterpolation_f.scala
/ FastTrack.scala
)。