formatting decimals
A simple example of QUnit tests using JSFiddle
by digitalzebra
HTML
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-1.12.0.css">
<script src="https://code.jquery.com/qunit/qunit-1.12.0.js"></script>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
JavaScript
// TODO: possibly could use MDN's decimal adjust here
function formatDecimal(num, places) {
var intermediate = null;
if (typeof(num) === 'string') {
num = parseFloat(num);
}
if (places === 0) {
// truncate decimals instead of doing any sort of rounding
intermediate = Math[num < 0 ? 'ceil' : 'floor'](num).toString();
}
else {
intermediate = parseFloat(num.toFixed(places)).toString();
}
var parts = intermediate.split(".");
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return parts.join(".");
}
test("formatValueInGrid basic", function () {
var formattedDecimal = formatDecimal(9000.568, 3);
equal(formattedDecimal, '9,000.568');
});
test("formatValueInGrid rounding up", function () {
var formattedDecimal = formatDecimal(9000.568, 2);
equal(formattedDecimal, '9,000.57');
});
test("formatValueInGrid half rounding decimal away from zero", function () {
var formattedDecimal = formatDecimal(9000.565, 2);
equal(formattedDecimal, '9,000.57');
});
test("formatValueInGrid decimal rounding down", function () {
var formattedDecimal = formatDecimal(9000.564, 2);
equal(formattedDecimal, '9,000.56');
});
test("formatValueInGrid no zero extension", function () {
var formattedDecimal = formatDecimal(9000.00, 2);
equal(formattedDecimal, '9,000');
});
test("formatValueInGrid no defined decimal places goes to zero places", function () {
// Purposefully not defining decimal places property here
var formattedDecimal = formatDecimal(9000.15, 0);
equal(formattedDecimal, '9,000');
});
test("formatValueInGrid no decimal places truncates instead of rounds", function () {
// Purposefully not defining decimal places property here
var formattedDecimal = formatDecimal(9000.85, 0)
equal(formattedDecimal, '9,000');
});
test("formatValueInGrid decimal with no zero extension", function () {
var formattedDecimal = formatDecimal(9000.15, 4);
equal(formattedDecimal, '9,000.15');
});
test("formatValueInGrid...