"%.3f".format(1)
выдаст java.util.IllegalFormatConversionException
из-за неправильного типа (ожидается Float
, и вы дадите Int
).
Даже если вы используете "%.3f".format(1.0)
, вы получите 1.000
.
Для получения ожидаемого результата можно использовать метод, подобный следующему:
def format(x:AnyVal):String = x match {
case x:Int => "%d".format(x)
case x:Long => "%d".format(x)
case x:Float => "%.3f".format(x)
case x:Double => "%.3f".format(x)
case _ => ""
}
Этот метод возвращает ожидаемый формат в зависимости от типа аргумента.