mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-07 18:07:49 +00:00
Enhance createRound by using toNumber to allow binary and octal strings.
This commit is contained in:
committed by
John-David Dalton
parent
ec8ccbcc55
commit
3eda8e64f3
@@ -4148,15 +4148,15 @@
|
|||||||
function createRound(methodName) {
|
function createRound(methodName) {
|
||||||
var func = Math[methodName];
|
var func = Math[methodName];
|
||||||
return function(number, precision) {
|
return function(number, precision) {
|
||||||
|
number = toNumber(number);
|
||||||
precision = precision ? toInteger(precision) : 0;
|
precision = precision ? toInteger(precision) : 0;
|
||||||
if (precision) {
|
if (precision) {
|
||||||
// Shift with exponential notation to avoid floating-point issues.
|
// Shift with exponential notation to avoid floating-point issues.
|
||||||
// See [MDN](https://mdn.io/round#Examples) for more details.
|
// See [MDN](https://mdn.io/round#Examples) for more details.
|
||||||
var pair = (+number + 'e').split('e'),
|
var pair = (toString(number) + 'e').split('e'),
|
||||||
value = func(pair[0] + 'e' + (+pair[1] + precision));
|
value = toString(func(pair[0] + 'e' + (+pair[1] + precision)));
|
||||||
|
|
||||||
pair = (value + 'e').split('e');
|
pair = (value + 'e').split('e');
|
||||||
return +(pair[0] + 'e' + (pair[1] - precision));
|
return +(pair[0] + 'e' + (+pair[1] - precision));
|
||||||
}
|
}
|
||||||
return func(number);
|
return func(number);
|
||||||
};
|
};
|
||||||
|
|||||||
12
test/test.js
12
test/test.js
@@ -16130,7 +16130,19 @@
|
|||||||
|
|
||||||
actual = func('5e1e1', 1);
|
actual = func('5e1e1', 1);
|
||||||
assert.deepEqual(actual, NaN);
|
assert.deepEqual(actual, NaN);
|
||||||
|
});
|
||||||
|
|
||||||
|
QUnit.test('`_.' + methodName + '` should preserve sign of `0`', function(assert) {
|
||||||
|
assert.expect(1);
|
||||||
|
|
||||||
|
var values = [[0], [-0], ['0'], ['-0'], [0, 1], [-0, 1], ['0', 1], ['-0', 1]],
|
||||||
|
expected = [Infinity, -Infinity, Infinity, -Infinity, Infinity, -Infinity, Infinity, -Infinity];
|
||||||
|
|
||||||
|
var actual = lodashStable.map(values, function(args) {
|
||||||
|
return 1 / func.apply(undefined, args);
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.deepEqual(actual, expected);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user