August 2013
Intermediate to advanced
720 pages
16h 23m
English
You want to format numbers or currency to control decimal places and commas, typically for printed output.
For basic number formatting, use the f string interpolator shown in Recipe 1.4:
scala>val pi = scala.math.Pipi: Double = 3.141592653589793 scala>println(f"$pi%1.5f")3.14159
A few more examples demonstrate the technique:
scala>f"$pi%1.5f"res0: String = 3.14159 scala>f"$pi%1.2f"res1: String = 3.14 scala>f"$pi%06.2f"res2: String = 003.14
If you’re using a version of Scala prior to 2.10, or prefer the
explicit use of the format method,
you can write the code like this instead:
scala> "%06.2f".format(pi)
res3: String = 003.14A simple way to add commas is to use the getIntegerInstance method of the java.text.NumberFormat class:
scala>val formatter = java.text.NumberFormat.getIntegerInstanceformatter: java.text.NumberFormat = java.text.DecimalFormat@674dc scala>formatter.format(10000)res0: String = 10,000 scala>formatter.format(1000000)res1: String = 1,000,000
You can also set a locale with the getIntegerInstance method:
scala>val locale = new java.util.Locale("de", "DE")locale: java.util.Locale = de_DE scala>val formatter = java.text.NumberFormat.getIntegerInstance(locale)formatter: java.text.NumberFormat = java.text.DecimalFormat@674dc scala>formatter.format(1000000)res2: String = 1.000.000
You can handle floating-point values with a formatter returned by
getInstance:
scala> val formatter = java.text.NumberFormat.getInstance ...Read now
Unlock full access