val height = 1.9d
val name = "James"
println(f"$name%s is $height%2.2f meters tall") // James is 1.90 meters tall
我在Better String formatting in Scala和Scala文档中都看过这个例子。
2%后代表什么?我假设2f表示两位小数。
答案 0 :(得分:3)
Scala string interpolation formats实际上在幕后使用java's Formatter。
格式字符串具有以下格式:
%[argument_index$][flags][width][.precision]conversion
在您的情况下,格式字符串使用float
转换(最后为f
)
因此,您的格式字符串要求进行宽度为2
且精度为2
的浮动转换
%4.10f
以同样的方式请求宽度为4
且精度为10
的浮点转换。
1.9d
传递给字符串%4.10f
会产生字符串
1,9000000000
1.9d
传递给字符串%10.4f
会产生字符串
1,9000
(用空格填充宽度为10)答案 1 :(得分:1)
前2个表示要在输出中打印的最小字符数,第2个表示您需要的小数点后的位数。
假设您改为“%5.2f”,而“身高”为1.2,
它会导致' 1.20'
(开头的空格)[不是引号;他们在这里是为了清楚]
文档分别将它们称为宽度和精度(%[宽度]。[精度])。
http://docs.scala-lang.org/overviews/core/string-interpolation.html (这指向java Formatter的文档)
https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html