我正在使用groovy(grails 1.3.7)将一些行写入文本文件,我想像这个示例输出那样格式化货币:
$100,000,000.00
$9,123,123.25
$10.20
$1,907.23
所以基本上是右对齐,或左边填充,在数字前面加上美元符号,所以它们都像上面一样排列。第一个数字是我们期望看到的最长数字。现在我有一个数量变量,只是定义了一个def而不是字符串或数字或任何特定的类似但我可以明显改变,如果需要。谢谢!
答案 0 :(得分:11)
您可能想要使用NumberFormat.getCurrencyInstance()
。这将返回一个NumberFormat
对象,该对象使用默认语言环境的标准货币表示形式(或者可选地,您传入的那个)。
要正确对齐,您可以使用String.padLeft()
。
示例:
def formatter = java.text.NumberFormat.currencyInstance
def values = [0, 100000000, 9123123.25, 10.20, 1907.23]
def formatted = values.collect { formatter.format(it) }
def maxLen = formatted*.length().max()
println formatted.collect { it.padLeft(maxLen) }.join("\n")
//output
$0.00
$100,000,000.00
$9,123,123.25
$10.20
$1,907.23
答案 1 :(得分:4)
在grails中,类似的东西会用逗号分隔符很好地格式化。
<g:formatNumber number="${150000}" type="currency" currencyCode="USD"/>
对于右对齐,我会使用样式:
<td style='text-align:right;...'>