jQuery rounding number to nearest, flooring or ceiling as expected decimal point
jQuery rounding number to nearest, flooring or ceiling as expected decimal point
by Pritom K Mondal
HTML
<input type='text' name='number' style='width: 150px;' value='10.2345'/>
<input type='text' name='dp' style='width: 50px;' value='2'/>
<input type='button' name='check' value='Check'/>
<div></div>
JavaScript
var div = $("div");
log("---------------------------------------------------------");
$("input[type='button']").click(function() {
var number = parseFloat($("input[name='number']").val());
var dp = parseFloat($("input[name='dp']").val());
if (!isNaN(number) && !isNaN(dp)) {
var rounded = roundNumber(number, dp * -1);
var floored = floorNumber(number, dp * -1);
var ceiled = ceilNumber(number, dp * -1);
log("Original number: " + numberToString(number, dp));
log("Rounded: " + numberToString(rounded, dp) +
", floored: " + numberToString(floored, dp) +
", ceiled: " + numberToString(ceiled, dp));
log("---------------------------------------------------------");
}
});
$("input[type='button']").trigger("click");
function roundNumber(value, exp) {
return decimalAdjust('round', value, exp);
}
function floorNumber(value, exp) {
return decimalAdjust('floor', value, exp);
}
function ceilNumber(value, exp) {
return decimalAdjust('ceil', value, exp);
}
function decimalAdjust(type, value, exp) {
// If the exp is undefined or zero...
if (typeof exp === 'undefined' || +exp === 0) {
return Math[type](value);
}
value = +value;
exp = +exp;
// If the value is not a number or the exp is not an integer...
if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
return NaN;
}
// Shift
value = value.toString().split('e');
value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
// Shift back
value = value.toString().split('e');
return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
}
function log(m) {
div.prepend(m + "<br/>");
}
function numberToString(number, dp, asDp) {
var format = '#';
if (asDp === undefined || asDp == null) {
asDp = false;
}
if (dp !== undefined && dp != null && !isNaN(dp)) {
if (dp > 9) {
...