Scala字符串格式

时间:2016-01-09 09:01:07

标签: scala

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表示两位小数。

2 个答案:

答案 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