time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

toFinite.js (868B)


      1 var toNumber = require('./toNumber');
      2 
      3 /** Used as references for various `Number` constants. */
      4 var INFINITY = 1 / 0,
      5     MAX_INTEGER = 1.7976931348623157e+308;
      6 
      7 /**
      8  * Converts `value` to a finite number.
      9  *
     10  * @static
     11  * @memberOf _
     12  * @since 4.12.0
     13  * @category Lang
     14  * @param {*} value The value to convert.
     15  * @returns {number} Returns the converted number.
     16  * @example
     17  *
     18  * _.toFinite(3.2);
     19  * // => 3.2
     20  *
     21  * _.toFinite(Number.MIN_VALUE);
     22  * // => 5e-324
     23  *
     24  * _.toFinite(Infinity);
     25  * // => 1.7976931348623157e+308
     26  *
     27  * _.toFinite('3.2');
     28  * // => 3.2
     29  */
     30 function toFinite(value) {
     31   if (!value) {
     32     return value === 0 ? value : 0;
     33   }
     34   value = toNumber(value);
     35   if (value === INFINITY || value === -INFINITY) {
     36     var sign = (value < 0 ? -1 : 1);
     37     return sign * MAX_INTEGER;
     38   }
     39   return value === value ? value : 0;
     40 }
     41 
     42 module.exports = toFinite;