2.9. Formatting Numbers and Currency
Problem
You want to format numbers or currency to control decimal places and commas, typically for printed output.
Solution
For basic number formatting, use the f
string interpolator shown in Recipe 1.4:
scala> val pi = scala.math.Pi pi: 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.14
A simple way to add commas is to use the getIntegerInstance
method of thejava.text.NumberFormat
class:
scala> val formatter = java.text.NumberFormat.getIntegerInstance formatter: 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 ...
请参考https://www.safaribooksonline.com/library/view/scala-cookbook/9781449340292/ch02s10.html