You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							35 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							35 lines
						
					
					
						
							1.2 KiB
						
					
					
				var root = require('./_root'), | 
						|
    toInteger = require('./toInteger'), | 
						|
    toNumber = require('./toNumber'), | 
						|
    toString = require('./toString'); | 
						|
 | 
						|
/* Built-in method references for those with the same name as other `lodash` methods. */ | 
						|
var nativeIsFinite = root.isFinite, | 
						|
    nativeMin = Math.min; | 
						|
 | 
						|
/** | 
						|
 * Creates a function like `_.round`. | 
						|
 * | 
						|
 * @private | 
						|
 * @param {string} methodName The name of the `Math` method to use when rounding. | 
						|
 * @returns {Function} Returns the new round function. | 
						|
 */ | 
						|
function createRound(methodName) { | 
						|
  var func = Math[methodName]; | 
						|
  return function(number, precision) { | 
						|
    number = toNumber(number); | 
						|
    precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); | 
						|
    if (precision && nativeIsFinite(number)) { | 
						|
      // Shift with exponential notation to avoid floating-point issues. | 
						|
      // See [MDN](https://mdn.io/round#Examples) for more details. | 
						|
      var pair = (toString(number) + 'e').split('e'), | 
						|
          value = func(pair[0] + 'e' + (+pair[1] + precision)); | 
						|
 | 
						|
      pair = (toString(value) + 'e').split('e'); | 
						|
      return +(pair[0] + 'e' + (+pair[1] - precision)); | 
						|
    } | 
						|
    return func(number); | 
						|
  }; | 
						|
} | 
						|
 | 
						|
module.exports = createRound;
 | 
						|
 |