kotlin的字符串模板使用哪个语言环境?

该文档不包括哪些区域设置用于将变量转换为字符串。 一个例子:

val d = 0.1234 val s = "$a" 

0.12340,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