2016-01-09 131 views
3
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

這裏閱讀更多的細節 - http://docs.scala-lang.org/overviews/core/string-interpolation html的 – tuxdna

回答

3

斯卡拉string interpolation formats幕後實際使用java's Formatter

格式字符串具有以下格式:

%[argument_index$][flags][width][.precision]conversion 

在你的情況下,格式字符串使用float轉換(將f末)

所以你的格式字符串要求一個浮動轉換的寬度爲2,精度爲2

以同樣的方式%4.10f將請求一個寬度爲的浮點轉換,精度爲10

  • 傳遞1.9d到格式字符串%4.10f將導致字符串 1,9000000000
  • 傳遞1.9d到格式字符串%10.4f將導致該串中在     1,9000(它將被填充爲10與空白的寬度)
1

第一個2表示您希望在輸出中打印的最少字符數,第二個2表示在t之後的數字位數他需要小數點。

假設你改爲「%5.2f」,並且「身高」爲1.2, 它會導致' 1.20'(在開始處有空格)[不是引號;他們在這裏是爲了清晰]

文檔分別稱爲寬度和精度(%[寬度]。[精度])。

http://docs.scala-lang.org/overviews/core/string-interpolation.html (這指向文檔爲Java格式化)

https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html