00001 var toInteger = require('./toInteger'),
00002 toNumber = require('./toNumber'),
00003 toString = require('./toString');
00004
00005
00006 var nativeMin = Math.min;
00007
00015 function createRound(methodName) {
00016 var func = Math[methodName];
00017 return function(number, precision) {
00018 number = toNumber(number);
00019 precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
00020 if (precision) {
00021
00022
00023 var pair = (toString(number) + 'e').split('e'),
00024 value = func(pair[0] + 'e' + (+pair[1] + precision));
00025
00026 pair = (toString(value) + 'e').split('e');
00027 return +(pair[0] + 'e' + (+pair[1] - precision));
00028 }
00029 return func(number);
00030 };
00031 }
00032
00033 module.exports = createRound;