You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:24:37