Какой язык используется для шаблонов строк kotlin?

Документация не охватывает, какой язык используется для преобразования переменных в строки. Пример:

val d = 0.1234 val s = "$a" 

Будет ли 0.1234 или 0,1234 что отражает локальную ( de_AT ) мою машину?

Любые средства для его корректировки?

Solutions Collecting From Web of "Какой язык используется для шаблонов строк kotlin?"

TL; DR: вы не можете настроить его.

Если вы посмотрите на байт-код при использовании интерполяции строк, вы увидите, что он использует StringBuilder под капотом (что совпадает с тем, что делают современные компиляторы Java с + конкатенацией).

Как пример, если вы берете этот код:

 val kt = "Kotlin" println("hello $kt") 

Операция с шаблоном строки выглядит так в байтовом коде (который является умеренно разборчивым):

 LINENUMBER 8 L2 NEW java/lang/StringBuilder DUP INVOKESPECIAL java/lang/StringBuilder.<init> ()V LDC "hello " INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder; ALOAD 1 INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder; INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String; ASTORE 2 

Вернемся к делу. Итак, теперь вопрос в том, что использует StringBuilder когда вы добавляете к нему double . Если вы посмотрите документацию, он использует метод String.valueOf(double) , который, в свою очередь, использует Double.toString(double) , для которого вы можете найти здесь документацию, чтобы увидеть, как он форматирует значения, данные для него. Краткое описание: используется . как десятичный разделитель, и дает вам экспоненциальные обозначения с E для очень малых и очень больших чисел.

Документация в последней ссылке предлагает использовать NumberFormat если вы хотите отформатировать его по-другому. Я также предлагаю String.format , с которым вы можете передать Locale .