Scala:使用小数点和千位分隔符以及 2 个小数位打印 Double

Scala: Print Double with decimal and thousands seperator and 2 decimal places

我正在尝试像这样打印一个双打:

val Double = 12591294124.125124
printf("%,2f", Double)

想要的输出:12.591.294.124,13

奇怪的是,当使用“%,2f”时,它不会四舍五入到小数点后两位,而是像这样打印 6:12.591.294.124,125124 有没有办法使用 , 作为十进制分隔符并四舍五入到 2 位数字? 谢谢!

println(f"$Double%,.2f") // -> 12,591,294,124.13
println(f"$Double%,.2f"
  .replace(',', '-')
  .replace('.', ',')
  .replace('-', '.')) // -> 12.591.294.124,13

您可以选择比利时区域设置来获得此表示:

import java.util.Locale._

val belgiumLocale = getAvailableLocales.filter(_.getDisplayCountry == "Belgium")
                                       .head

val Double = 12591294124.125124
"%,.2f".formatLocal(belgiumLocale, Double)
// 12.591.294.124,13