2016-03-15 52 views
0

下JS功能然而,在镀铬返回时的jsfiddle返回($ 6.48), - $ 6.48JavaScript的美国货币格式

function formatCurrency(value) {  
    var neg = false; 
    value = parseFloat(value, 10).toFixed(2); 
    if (value < 0) { 
     neg = true; 
     total = Math.abs(value); 
    } 
    value = value.replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString(); 
    return (neg ? '($' + value.replace('-', '') + ')' : '$' + value); 
} 

alert(formatCurrency("-6.4784")); 

我想使用的功能,同时格式化货币返回负值在括号中。

渲染div的代码的简化版本是这样的。

document.getElementById("futureInfo").innerHTML = formatCurrency($(this).find("Variance").text()); 
<div id="futureInfo"></div> 
+2

在Chrome中进行测试,它显示'$ 6.48':https://jsfiddle.net/84g4wkob/。当您使用'Math.abs'时,我不明白在任何浏览器中如何看到负面结果。 –

+1

您可以随时使用[全球化](https://github.com/jquery/globalize)。如果你使用jQuery,这是一个简单的解决方案。它是否值得仅用于货币是另一个问题。 – Bakudan

+0

我发现在巨大的代码库中有一个重复的函数,它没有添加括号,而是被调用而不是我的。 –

回答

1

您的问题是,你没有使用总可变正确,我改变它,而不是价值。我还移动了toString函数,以便将数字转换为字符串,以便替换可以正常工作。

function formatCurrency(value) { 
    var neg = false; 
    value = parseFloat(value, 10).toFixed(2); 
    if (value < 0) { 
    neg = true; 
    value = Math.abs(value); 
    } 

    value = value.toString().replace(/(\d)(?=(\d{3})+\.)/g, "$1,"); 
    return (neg ? ('($-' + value + ')') : ('$' + value)); 
} 

alert(formatCurrency("-6.4784")); 
+0

我发现在巨大的代码库中有一个重复函数,它没有添加括号,而是被调用而不是我的。 –