Skip to content

Instantly share code, notes, and snippets.

@vordan
Created August 31, 2015 18:13
Show Gist options
  • Save vordan/069a6b7c4d351b251d04 to your computer and use it in GitHub Desktop.
Save vordan/069a6b7c4d351b251d04 to your computer and use it in GitHub Desktop.
Precise rounding of numbers
function round_precise(value, exp) {
if (typeof exp === 'undefined' || +exp === 0)
return Math.round(value);
value = +value;
exp = +exp;
if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0))
return NaN;
// Shift
value = value.toString().split('e');
value = Math.round(+(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));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment