Scala Строковая интерполяция с помощью формата, как изменить язык?
При выполнении интерполяции строк форматирования в Швеции я получаю запятую вместо точки при создании строк с десятичными числами:
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
? Я хотел бы иметь возможность устанавливать локаль только для этой строки, т.е. Чтобы я не менял локаль для всей среды.
Приветствия,
Йохан
Ответы
Ответ 1
Используя ту же Поддержка форматирования номера библиотеки Java
из StringOps
обогащенный класс строк, вы можете указать другой язык только для этого вывода:
"%.2f".formatLocal(java.util.Locale.US, a)
(как описано в Как преобразовать Int в строку с заданной длиной с ведущими нулями для выравнивания?")
Scala будет использовать string f interpolator (Scala 2.10+), как в вопросе OP, но он использует "текущую локаль", не предлагая простой способ установить эту локаль на другую для одного вызова.
Ответ 2
Locale.setDefault(Locale.US)
println(f"$a%.2f")