Answers:
不幸的是,尚无内置的字符串模板格式支持,但是,作为一种解决方法,您可以使用以下方法:
"pi = ${pi.format(2)}"
该.format(n)
功能你需要自己定义为
fun Double.format(digits: Int) = "%.${digits}f".format(this)
Kotlin目前显然缺少这里的一项功能,我们将对其进行修复。
作为一种解决方法,有一个Kotlin stdlib函数可以很好地使用,并且与Java的String格式完全兼容(它只是Java的包装器String.format()
)
请参阅Kotlin的文档
您的代码为:
val pi = 3.14159265358979323
val s = "pi = %.2f".format(pi)
Kotlin的String类现在具有格式函数,该函数内部使用Java的String.format
方法:
/**
* Uses this string as a format string and returns a string obtained by substituting the specified arguments,
* using the default locale.
*/
@kotlin.internal.InlineOnly
public inline fun String.Companion.format(format: String, vararg args: Any?): String = java.lang.String.format(format, *args)
用法
val pi = 3.14159265358979323
val formatted = String.format("%.2f", pi) ;
println(formatted)
>>3.14
由于String.format
只是内部调用的扩展函数(请参阅此处),因此,如果需要更大的灵活性,java.lang.String.format
可以使用Java的DecimalFormat编写自己的扩展函数:
fun Double.format(fracDigits: Int): String {
val df = DecimalFormat()
df.setMaximumFractionDigits(fracDigits)
return df.format(this)
}
println(3.14159.format(2)) // 3.14