我试图在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?
答案 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
。