该文档未涵盖用于将变量转换为字符串的语言环境.一个例子:
val d = 0.1234
val s = "$d"
Run Code Online (Sandbox Code Playgroud)
将s是0.1234或0,1234反映我的机器的本地(de_AT)?
有什么方法可以调整吗?
TL; DR:你无法调整它.
如果在使用字符串插值时查看字节码,您将看到它StringBuilder在引擎盖下使用(这与现代Java编译器对+串联的操作相同).
举个例子,如果你拿这个代码:
val kt = "Kotlin"
println("hello $kt")
Run Code Online (Sandbox Code Playgroud)
字符串模板操作在字节码中看起来像这样(这是中等清晰的):
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
Run Code Online (Sandbox Code Playgroud)
回到关键点.所以现在的问题是StringBuilder当你追加double它时会有什么用处.如果您查找文档,它会使用该String.valueOf(double)方法,而该方法又可以使用Double.toString(double),您可以在此处找到文档,以查看它如何格式化给定的值.简短摘要:它.用作小数点分隔符,并E为非常小和非常大的数字提供指数表示法.
NumberFormat如果要以不同方式格式化,最后一个链接中的文档建议使用.我也建议String.format,你可以传递Locale给.
| 归档时间: |
|
| 查看次数: |
650 次 |
| 最近记录: |