DollarFormat与ColdFusion中的减号

时间:2014-07-28 17:23:45

标签: coldfusion number-formatting

我试图在ColdFusion中将-1000的值格式化为 - $ 1,000.00。 使用dollarFormat时,它会在括号中显示负数($ 1,000.00)。 当我像这样使用numberFormat时:

numberFormat(-1000,'$');

显示为 - $ 1000,没有2位小数和逗号,但在正确位置显示减号。 如果我尝试:

numberFormat(-1000,'$_,___.__');

显示为$ -1,000.00,其中减号位于$符号后面。 如果我尝试:

numberFormat(-1000,'-$_,___.__');

它仍然显示为$ -1,000.00,其中减号位于$符号之后。

似乎没有小数,那么减号位于正确的位置但是只要你添加小数,那么减号就会出现在美元符号之后。 有没有人知道如何正确地获得格式 - 例如$ 1,000.00?

3 个答案:

答案 0 :(得分:7)

使用Java DecimalFormat,它允许为正数和负数提供格式化掩码:

for (v in [1234,-5678]){
    result = createObject("java", "java.text.DecimalFormat").init("$##,####0.00;-$##,####0.00").format(javacast("double",v));
    writeDump(var=[v, result]);
    writeOutput("<hr>");
}

显然将其包装在UDF中。

答案 1 :(得分:3)

您可能需要编写自己的功能。为什么不简单地注意该值是否小于零(负)然后取其绝对值abs(-1000)然后取美元格式,如果它是负数,则前置-

类似的东西(未经测试):

<cfscript>
public string function myCurrencyFormatter(num) {
  var neg = (num < 0);
  var str = dollarFormat(abs(num));
  if (neg) {
    str = "-" & str;
  }
  return str;
}
</cfscript>

答案 2 :(得分:0)

使用 numberFormat(n, "$.00")-$9.00 输出为 n=9