foop
Version:
interfaces that describe their intentions.
36 lines (35 loc) • 3.11 kB
JavaScript
/**
* @desc remainder / 1 is 0
* @since 5.0.00beta.6
* @memberOf is
*
* @param {number | string | *} x value to check
* @return {boolean} x hasDecimals
*
* @func
* @name hasDecimals
* @alias isDecimalNumberish
*
* @TODO could ensure decimalNumber or isString first? (safety plus decision tree)
*
* {@link https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Remainder_() mozilla-arithmetic-operators-remainder}
* {@link https://stackoverflow.com/questions/3803331/how-can-i-modulo-when-my-numbers-start-from-1-not-zero stack-overflow-modulo-start-from-zero}
* @see {@link mozilla-arithmetic-operators-remainder}
* @see {@link stack-overflow-modulo-start-from-zero}
* @see is/validIndex
*
* @example
*
* hasDecimals(1) //=> false
* hasDecimals(Number(1)) //=> false
* hasDecimals(NaN) //=> false
* hasDecimals(new Number(1)) //=> false
* hasDecimals('') //=> false
* hasDecimals('100') //=> false
*
* hasDecimals('100.10') //=> true
* hasDecimals(100.1) //=> true
*
*/
module.exports = function (x) { return x % 1 === 0; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzRGVjaW1hbHMuanMiLCJzb3VyY2VzIjpbImhhc0RlY2ltYWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2MgcmVtYWluZGVyIC8gMSBpcyAwXG4gKiBAc2luY2UgNS4wLjAwYmV0YS42XG4gKiBAbWVtYmVyT2YgaXNcbiAqXG4gKiBAcGFyYW0ge251bWJlciB8IHN0cmluZyB8ICp9IHggdmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHggaGFzRGVjaW1hbHNcbiAqXG4gKiBAZnVuY1xuICogQG5hbWUgaGFzRGVjaW1hbHNcbiAqIEBhbGlhcyBpc0RlY2ltYWxOdW1iZXJpc2hcbiAqXG4gKiBAVE9ETyBjb3VsZCBlbnN1cmUgZGVjaW1hbE51bWJlciBvciBpc1N0cmluZyBmaXJzdD8gKHNhZmV0eSBwbHVzIGRlY2lzaW9uIHRyZWUpXG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL09wZXJhdG9ycy9Bcml0aG1ldGljX09wZXJhdG9ycyNSZW1haW5kZXJfKCkgbW96aWxsYS1hcml0aG1ldGljLW9wZXJhdG9ycy1yZW1haW5kZXJ9XG4gKiB7QGxpbmsgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzgwMzMzMS9ob3ctY2FuLWktbW9kdWxvLXdoZW4tbXktbnVtYmVycy1zdGFydC1mcm9tLTEtbm90LXplcm8gc3RhY2stb3ZlcmZsb3ctbW9kdWxvLXN0YXJ0LWZyb20temVyb31cbiAqIEBzZWUge0BsaW5rIG1vemlsbGEtYXJpdGhtZXRpYy1vcGVyYXRvcnMtcmVtYWluZGVyfVxuICogQHNlZSB7QGxpbmsgc3RhY2stb3ZlcmZsb3ctbW9kdWxvLXN0YXJ0LWZyb20temVyb31cbiAqIEBzZWUgaXMvdmFsaWRJbmRleFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogIGhhc0RlY2ltYWxzKDEpICAgICAgICAgICAgIC8vPT4gZmFsc2VcbiAqICBoYXNEZWNpbWFscyhOdW1iZXIoMSkpICAgICAvLz0+IGZhbHNlXG4gKiAgaGFzRGVjaW1hbHMoTmFOKSAgICAgICAgICAgLy89PiBmYWxzZVxuICogIGhhc0RlY2ltYWxzKG5ldyBOdW1iZXIoMSkpIC8vPT4gZmFsc2VcbiAqICBoYXNEZWNpbWFscygnJykgICAgICAgICAgICAvLz0+IGZhbHNlXG4gKiAgaGFzRGVjaW1hbHMoJzEwMCcpICAgICAgICAgLy89PiBmYWxzZVxuICpcbiAqICBoYXNEZWNpbWFscygnMTAwLjEwJykgICAgICAvLz0+IHRydWVcbiAqICBoYXNEZWNpbWFscygxMDAuMSkgICAgICAgICAvLz0+IHRydWVcbiAqXG4gKi9cbm1vZHVsZS5leHBvcnRzID0geCA9PiB4ICUgMSA9PT0gMFxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQ0EsTUFBTSxDQUFDLE9BQU8sR0FBRyxVQUFBLENBQUMsQ0FBQSxDQUFDLEFBQUcsU0FBQSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBQTsifQ==