このバージョンはどうですか?
の使用にFormattableは%sフォーマットが必要ですが、好きなように解釈するためのフォーマット引数が与えられます。
は-interpolationFormattableの途中でポップアップする可能性があります。これは、通常は かカスタム のいずれかを使用するためです。fformattoStringformatTo
package object succinctly {
  import java.util.{ Formattable, FormattableFlags, Formatter }
  import scala.language.implicitConversions
  implicit class Succinctly(val __thing: Double) extends AnyVal {
    @inline def succinctly(s: String): String = s format fmtable(__thing)
    @inline def succinctly: Formattable = fmtable(__thing)
  }
  private[this] val trailing = "(.*\\...*?)(0*)".r
  private[this] def fmtable(a: Double) = new Formattable {
    override def formatTo(formatter: Formatter, flags: Int, width: Int, precision: Int) = formatter.out append (
      if (precision <= 0) a.toInt.toString
      else s"%${width}.${precision}f" format a.asInstanceOf[java.lang.Double] match { case trailing(num, _) => num }
    )
  }
}
package succinctly {
  import scala.language.postfixOps
  import scala.math._
  object Test extends App {
    Console println (Pi succinctly "%1.2s")
    Console println (3.1 succinctly "%1.2s")
    Console println (3.0 succinctly "%1.2s")
    Console println f"${3.1 succinctly}%1.2s"
  }
}
-interpolator はマクロであるため、多少のコストはかかりますが、doubles を Trailless に昇格させて に変更するカスタム Interpolator を作成することも考えられます%f。%sf