Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Scala中使用f字符串插值器强制指定十进制分隔符_String_Scala_String Interpolation_Scala 2.11 - Fatal编程技术网

String 在Scala中使用f字符串插值器强制指定十进制分隔符

String 在Scala中使用f字符串插值器强制指定十进制分隔符,string,scala,string-interpolation,scala-2.11,String,Scala,String Interpolation,Scala 2.11,我正在尝试编写一个格式化字符串,该字符串应如下所示: 一瓶伏特加的价格是x.yz卢布 其中x.yz是四舍五入为2个小数点的任意双精度值 为了实现这一点,我使用带有printf语法的字符串插值: val cost = 2.56 val str = f"A bottle of vodka costs $cost%.2f rubles." 不幸的是,在使用俄语语言环境的机器上,上面的代码片段产生的结果与我想要实现的结果略有不同: str:String=一瓶伏特加的价格为2,56卢布 这是可以理解的(

我正在尝试编写一个格式化字符串,该字符串应如下所示:

一瓶伏特加的价格是x.yz卢布

其中x.yz是四舍五入为2个小数点的任意双精度值

为了实现这一点,我使用带有printf语法的字符串插值:

val cost = 2.56
val str = f"A bottle of vodka costs $cost%.2f rubles."
不幸的是,在使用俄语语言环境的机器上,上面的代码片段产生的结果与我想要实现的结果略有不同:

str:String=一瓶伏特加的价格为2,56卢布

这是可以理解的(f interpolator使用的Java格式化程序应用了特定于语言环境的十进制分隔符,如所述),但我仍然希望使用小数点而不是逗号

我知道一种可能的解决方法–使用显式设置语言环境的
formatLocal()
方法:

 val str = "A bottle of vodka costs %.2f  rubles.".formatLocal(java.util.Locale.US, cost)
但我并不认为这是一种特别讲究规模的做事方式


因此,我的问题是:是否可以仅使用f插值来格式化带有特定小数分隔符的字符串,而不使用任何无关的方法调用?

目前
f
插值器不支持区域设置或自定义分隔符(请参见
宏字符串插值\u f.scala
/
快速跟踪.scala
).

相关:@WiktorStribiżew谢谢!但是请注意,我的问题仅限于使用任意的十进制分隔符;我对改变地点不感兴趣。从我收集的信息来看,这似乎是真的(如果有点令人失望的话)。谢谢