ColdFusion中带减号的DollarFormat

ColdFusion中带减号的DollarFormat,coldfusion,number-formatting,Coldfusion,Number Formatting,我试图在ColdFusion中将-1000的值格式化为-1000.00美元。 使用dollarFormat时,它会在括号中显示负数,如($1000.00)。 当我这样使用numberFormat时: numberFormat(-1000,'$'); 它显示为-$1000,不带小数点后两位和逗号,但在正确位置显示减号。 如果我尝试: numberFormat(-1000,'$_,___.__'); numberFormat(-1000,'-$_,___.__'); 它显示为$-1000.00

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

numberFormat(-1000,'$');
它显示为-$1000,不带小数点后两位和逗号,但在正确位置显示减号。 如果我尝试:

numberFormat(-1000,'$_,___.__');
numberFormat(-1000,'-$_,___.__');
它显示为$-1000.00,减号在$符号之后。 如果我尝试:

numberFormat(-1000,'$_,___.__');
numberFormat(-1000,'-$_,___.__');
它仍然显示为$-1000.00,减号在$符号之后

似乎如果没有小数,那么减号的位置是正确的,但是只要你加上一个小数,那么减号就在美元符号之后。
是否有人知道如何正确获取格式,如-$1000.00?

您可能需要编写自己的函数。为什么不简单地记下该值是否小于零(负值),然后取其绝对值
abs(-1000)
然后将其格式化,如果为负值,则在
-
前面加上前缀

类似这样(未经测试):


公共字符串函数myCurrencyFormatter(num){
var neg=(num<0);
var str=dollarFormat(abs(num));
如果(负){
str=“-”&str;
}
返回str;
}
使用Java,它允许为正数和负数提供格式掩码:

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>");
}
for(v在[1234,-5678]中){
result=createObject(“java”、“java.text.DecimalFormat”).init(“$###”、“######0.00;”-$###、####0.00”).format(javacast(“double”,v));
writeDump(var=[v,result]);
写输出(“
”); }

显然,将其包装在一个UDF中。

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

是的,我也考虑过这一点,但想知道numberFormat()中是否有一些特殊的格式条件可以使其工作,但我猜没有经过测试,它也可以工作。与为每个请求创建对象相比,更喜欢这样做。尤其是当你有大量的数字需要格式化的时候。比mineHeh更好的答案。我发现它的大部分。。。堆栈上溢出;-)遗憾的是,
dollarFormat()
没有自定义输出的方法。执行
dollarFormat(-18)
返回
($18.00)
。所以,它有点照顾它……只是不是以一些人想要的方式。@ScottStroz我想不出任何理由有人不应该提出一个增强请求,让第二个可选参数添加到
dollarFormat()
,以便更灵活地处理这个问题。或者反对所有的
dollarFormat()
LSCurrencyFormat()
LSEuroCurrencyFormat()
,支持一个统一的
currencyFormat()
,它既支持区域设置,又可屏蔽。在21stC中,不可能需要非语言环境感知功能。因此,不需要在名称前加LS或在名称中指定货币名称。这是古老的语言设计。