How to format a dollar? [duplicate]
Possible Duplicate:
开发者_如何学CHow can I format numbers as money in JavaScript?
I am doing a divide and multiply to figure out the value of a field and the value looks like this
$32560.000000000004.00
I am setting the value like this
sq_footage = $("#sq_footage").val();
sq_footage_total = (((sq_footage / 36) * factor) * average )* 30;
if(factor != ""){
$("#new_calc").val("$" + sq_footage_total + ".00");
}
Is there a way to format it like
$32,560.00
I know this has been solved before, but here's my solution just for fun:
function formatDollar(num) {
var p = num.toFixed(2).split(".");
return ["$", p[0].split("").reverse().reduce(function(acc, num, i) {
return num + (i && !(i % 3) ? "," : "") + acc;
}, "."), p[1]].join("");
}
And some tests:
formatDollar(45664544.23423) // "$45,664,544.23"
formatDollar(45) // "$45.00"
formatDollar(123) // "$123.00"
formatDollar(7824) // "$7,824.00"
formatDollar(1) // "$1.00"
formatDollar(939,009) // ?
function formatDollar(num) {
var p = num.toFixed(2).split(".");
return ["$", p[0].split("").reverse().reduce(function(acc, num, i) {
return num + (i && !(i % 3) ? "," : "") + acc;
}, "."), p[1]].join("");
}
const tests = [
{
input: 45664544.23423,
expected: "$45,664,544.23"
},
{
input: 45,
expected: "$45.00"
},
{
input: 123,
expected: "$123.00"
},
{
input: 7824,
expected: "$7,824.00"
},
{
input: 1,
expected: "$1.00"
},
{
input: -939009,
expected: "-$939,009.00"
}
]
tests.forEach(test => {
const { input, expected } = test
const actual = formatDollar(input)
if (expected !== actual) {
console.log(`Failed: ${input}. Expected ${expected}; actual: ${actual}`)
} else {
console.log(`Passed: ${input}`)
}
})
Your tag indicates that you are using jquery - so you might use the jQuery Format Currency Plugin
精彩评论