Fixing Scala error on String.format: overloaded method value format with alternatives:

If you try to use a “Double” in scala, you may get errors passing it to Java:

String.format("%-30s: %.2f ± %0.2f", kv._1, kv._2, kv._3)

This is the error I got:

[error] D:\projects\scala-indexer\src\main\scala\indexer\GpuConcepts.scala:114: overloaded method value format with alternatives:
[error]   (x$1: java.util.Locale,x$2: String,x$3: Object*)String <and>
[error]   (x$1: String,x$2: Object*)String
[error]  cannot be applied to (String, String, Double, Double)
[error]             String.format("%-30s: %.2f ▒ %0.2f", kv._1, kv._2, kv._3)

The issue here is that “Double”, as in “scala.Double” is the equivalent of the primitive “double” in Java. You can fix it by boxing the value:

String.format("%-30s: %.2f ± %0.2f", kv._1, Double.box(kv._2), Double.box(kv._3))

Interested in Scala? I send out weekly, personalized emails with articles and conference talks. Click here to see an example and subscribe.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *