2016-01-09 2 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.Форматирование строки Scala

Для чего стоят 2 после%? Я предполагаю, что 2f означает два десятичных знака.

+0

Читайте здесь для получения более подробной информации - http://docs.scala-lang.org/overviews/core/string-interpolation .html – tuxdna

ответ

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

Первые 2 указывают минимальное количество символов, которое вы хотите напечатать на выходе, а второе 2 будет указывать количество цифр после t его десятичную точку, в которой вы нуждаетесь.

Предположим, что вместо этого у вас было «% 5.2f», а «height» было 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

Смежные вопросы