gpt4 book ai didi

format - kotlin 的字符串模板使用哪种语言环境?

转载 作者:行者123 更新时间:2023-12-01 08:50:56 28 4
gpt4 key购买 nike

documentation不包括用于将变量转换为字符串的语言环境。一个例子:

val d = 0.1234
val s = "$d"

威尔 s0.12340,1234这反射(reflect)了我机器的本地( 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) ,您可以找到相关文档 here看看它如何格式化给它的值。简短摘要:它使用 .作为小数点分隔符,并为您提供指数符号 E对于非常小的和非常大的数字。

最后一个链接中的文档建议使用 NumberFormat 如果你想以不同的方式格式化它。我也建议 String.format ,你可以通过一个 Locale 到。

关于format - kotlin 的字符串模板使用哪种语言环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42837477/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com