Enhance createRound by using toNumber to allow binary and octal strings.

This commit is contained in:
Xotic750
2015-11-03 10:18:16 +01:00
committed by John-David Dalton
parent ec8ccbcc55
commit 3eda8e64f3
2 changed files with 16 additions and 4 deletions

View File

@@ -4148,15 +4148,15 @@
function createRound(methodName) {
var func = Math[methodName];
return function(number, precision) {
number = toNumber(number);
precision = precision ? toInteger(precision) : 0;
if (precision) {
// Shift with exponential notation to avoid floating-point issues.
// See [MDN](https://mdn.io/round#Examples) for more details.
var pair = (+number + 'e').split('e'),
value = func(pair[0] + 'e' + (+pair[1] + precision));
var pair = (toString(number) + 'e').split('e'),
value = toString(func(pair[0] + 'e' + (+pair[1] + precision)));
pair = (value + 'e').split('e');
return +(pair[0] + 'e' + (pair[1] - precision));
return +(pair[0] + 'e' + (+pair[1] - precision));
}
return func(number);
};