Scala字符串插值格式化Float变量时遇类型不匹配错误
解决Scala字符串插值格式化浮点数的类型不匹配问题
问题原因
Scala的s字符串插值器不支持直接在变量中嵌入printf风格的格式化修饰符(比如.2f)。你尝试的${num2:.2f}写法会被s插值器误判为类型检查逻辑,从而触发类型不匹配错误。
解决方案
使用Scala专门支持printf风格格式化的f字符串插值器替代s插值器,即可解决问题。修改后的代码如下:
def main(args: Array[String]): Unit = { val num1: Int = 10 val num2: Float = 10.2543f val str1: String = "Hello world" // 1st way printf("%d --- %.2f --- %s\n", num1, num2, str1) // 2nd way println("%d --- %.2f --- %s".format(num1, num2, str1)) // 3rd way - 使用f插值器实现格式化输出 println(f"$num1%d --- $num2%.2f --- $str1") }
代码说明
f插值器原生支持printf风格的格式化语法:$num1%d:将Int类型的num1格式化为十进制整数$num2%.2f:将Float类型的num2格式化为保留两位小数的浮点数$str1:字符串变量可直接使用,无需额外格式化符(也可写为$str1%s,效果一致)
运行修改后的代码,将输出你期望的结果:10 --- 10.25 --- Hello world
内容的提问来源于stack exchange,提问作者Aniket Jain
相关产品推荐
相关产品推荐

