Scala中如何将数字格式化为字符串,实现C语言printf的%6.2f效果
Scala 浮点变量格式化(等效C语言
%6.2f)并存入String的方案 你要实现的总宽度6位、保留2位小数的格式化效果,在Scala里有两种常用实现方式:
- 方法1:使用Scala原生f插值(推荐)
f插值是Scala提供的类型安全格式化方案,语法和C的printf占位符完全兼容,格式化错误会在编译阶段暴露,不会带到运行时。
示例代码:val floatNum: Double = 12.3456 // 直接通过f插值生成格式化后的字符串 val formattedStr: String = f"$floatNum%6.2f" // 输出结果为 " 12.35"(总长度6位,前补1个空格,四舍五入保留2位小数,和C `printf("%6.2f", 12.3456)`效果完全一致) - 方法2:使用Java风格
String.format
如果你更熟悉C/Java的格式化写法,可以直接调用JDK的String.format方法,语法和C的printf完全一致:
示例代码:val floatNum: Double = 1.234 val formattedStr: String = String.format("%6.2f", floatNum: java.lang.Double) // 输出结果为 " 1.23"(总长度6位,前补2个空格)
两种方法输出的结果完全符合C语言printf("%6.2f")的规则:总占宽最少6字符,小数部分固定2位,不足宽度时默认在左侧补空格,小数部分超出长度时自动四舍五入。
内容的提问来源于stack exchange,提问作者Hans-Joachim Buschmann
相关产品推荐
相关产品推荐

