Groovy货币格式

Groovy货币格式,groovy,formatting,currency,Groovy,Formatting,Currency,我正在使用groovy(grails 1.3.7)将一些行写入一个文本文件,并希望按照以下示例输出格式化货币: $100,000,000.00 $9,123,123.25 $10.20 $1,907.23 所以基本上是右对齐,或者左填充,数字前面有美元符号,所以它们都像上面一样排列。第一个数字是我们期望看到的最长的数字。现在我有一个amount变量,它只是用def定义的,而不是字符串、数字或任何类似的特定变量,但是如果需要的话,我可以很明显地更改它。谢谢 您可

我正在使用groovy(grails 1.3.7)将一些行写入一个文本文件,并希望按照以下示例输出格式化货币:

$100,000,000.00
  $9,123,123.25
         $10.20
      $1,907.23
所以基本上是右对齐,或者左填充,数字前面有美元符号,所以它们都像上面一样排列。第一个数字是我们期望看到的最长的数字。现在我有一个amount变量,它只是用def定义的,而不是字符串、数字或任何类似的特定变量,但是如果需要的话,我可以很明显地更改它。谢谢

您可能想使用。这将返回一个
NumberFormat
对象,该对象使用默认语言环境的标准货币表示形式(或者,您传入的语言环境)

为了正确证明,您可以使用

例如:

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

在grails中,这样的soemthing将使用逗号分隔符很好地格式化它

<g:formatNumber number="${150000}" type="currency" currencyCode="USD"/>

对于右对齐,我将使用样式:

<td style='text-align:right;...'>


你现在有什么?太好了!这正是我想要的。谢谢