Intereting Posts
Эффективный способ добавления строк, разделенных запятой Используя Flux вместо цикла for, какие-либо преимущества? Как вызвать функцию в другом классе Anko Logging с verbose и debug не работает У меня ошибка в android с Kotlin Ошибка: выполнение выполнено для задачи ': app: kaptDebugKotlin' Есть ли способ создать ненулевой массив из диапазона? Простой способ узнать, является ли класс анонимным / объектом и получить конкретное имя класса из экземпляра в Котлине Kapt generatestubs – невозможно инициализировать объект с помощью внутреннего конструктора из unit-test java.lang.VerifyError создает задачу градиента с kotlin Кнопка Detect Back Нажмите кнопку в Android View Почему у меня есть нежелательный выход Log при слиянии 2 наблюдаемых в другие Observable, которые буферизуют их каждые 10 секунд Как определить параметры типа для основного конструктора в Котлине? Неразрешенная ссылка: kotlinx Regex – слова соответствия, которые не являются строками

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

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

val d = 0.1234 val s = "$a" 

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

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

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 .