JavaScript工具类(六):number数字

Number


一、创建数字

JavaScript 数字可以使用也可以不使用小数点来书写

var x = 3.14; // 使用小数点
var y = 34; // 不使用小数点

极大或极小的数字可通过科学(指数)计数法来写

var z = 123e5; // 12300000
var w = 123e-5; // 0.00123

无穷大(Infinity)

var x = 2/0; // Infinity
var y = -2/0; // -Infinity

二、常用属性

属性描述
Number.MAX_VALUE返回 Javascript 的最大数:1.7976931348623157e+308。注意:大于MAX_VALUE的数表示无穷大(Infinity)
Number.MIN_VALUE返回 Javascript 的最小数:5e-324。注意: MIN_VALUE 是 JavaScript 最接近0的数,不是负值
Number.NEGATIVE_INFINITY返回负无穷大:-Infinity
Number.POSITIVE_INFINITY返回正无穷大:Infinity
prototype允许您向对象添加属性和方法
constructor对创建该对象的函数的引用

三、常用方法

方法描述
toFixed(x)把数字转换为字符串,结果为小数点后有指定位数的数字。
oExponential()把对象的值转换为指数计数法。
toPrecision()把数字格式化为指定的长度。

四、Math 对象常用方法

方法描述
ceil(x)上舍入
floor(x)下舍入
round(x)四舍五入
random()返回 0 ~ 1 之间的随机数
pow(x,y)返回 x 的 y 次幂
max(x,y,z,…,n)返回 x,y,z,…,n 中的最高值
min(x,y,z,…,n)返回 x,y,z,…,n中的最低值

四、number 数字方法封装

u.number = {};

转换成int类型
/**
 *@description 转换成int类型
 * @param {String Number} input 输入的数
 * @param {Number} defaultValue 转换失败时的默认值
 * @return {int}
 */
u.number.parseInt = function(input, defaultValue) {
    var value = parseInt(input)
    if (isNaN(value) || Infinity === value) {
        defaultValue = defaultValue || 0
        return defaultValue
    }
    return value
}
转换成float类型
/**
 * @description 转换成float类型
 * @param {String Number} input 输入的数
 * @param {Number} defaultValue 转换失败时的默认值
 * @return {float}
 */
u.number.parseFloat = function(input, defaultValue) {
    var value = parseFloat(input)
    if (isNaN(value) || Infinity === value) {
        defaultValue = defaultValue || 0
        return defaultValue
    }
    return value
}
保留几位小数(四舍五入法)
/**
 * @description 保留几位小数(四舍五入法)
 * @param {String Number} input 输入的数
 * @param {String Number} digits 小数位数,默认 2
 * @return {String}
 */
u.number.toFixed = function(input, digits) {
    digits = digits || 2
    input = u.number.parseFloat(input, 0)
    if (input === 0) return 0
    return input.toFixed(digits)
}
保留几位小数(进一法)
/**
 * @description 保留几位小数(进一法)
 * @param {String Number} input 输入的数
 * @param {String Number} digits 小数位数,默认 2
 * @return {String}
 */
u.number.ceil = function(input, digits) {
    digits = digits || 2
    var num = Math.ceil(input * Math.pow(10, digits)) / Math.pow(10, digits)
    return u.number.toFixed(num, digits)
}
保留几位小数(舍一法)
/**
 *@description 保留几位小数(舍一法)
 * @param {String Number} input 输入的数
 * @param {String Number} digits 小数位数,默认 2
 * @return {String}
 */
u.number.floor = function(input, digits) {
    digits = digits || 2
    var num = Math.floor(input * Math.pow(10, digits)) / Math.pow(10, digits)
    return u.number.toFixed(num, digits)
}
获取两个数之间的随机数
/**
 * @description 获取两个数之间的随机数
 * @param {Number} min
 * @param {Number} max
 * @return {Number}
 */
u.number.random = function(min, max) {
    var random = 0
    random = min + Math.random() * (max - min)
    return Math.round(random)
}
多个数相乘
/**
 *@description 多个数相乘
 * @param {Number String} args 乘数
 * @return {Number} 积
 */
u.number.mul = function(args) {
    var m = 0
    var ret = 1
    for (var i = 0; i < arguments.length; i++) {
        arguments[i] = arguments[i].toString()
        try {
            m += arguments[i].split('.')[1].length
        }
        catch (e) {
            m += 0
        }
        ret = arguments[i].replace('.', '') * ret
    }
    ret = ret / Math.pow(10, m)
    return ret
}
多个数相加
/**
 *@description 多个数相加
 * @param {Number String} args 加数
 * @return {Number} 和
 */
u.number.add = function(args) {
    var m = 0
    var ret = 0
    for (var i = 0; i < arguments.length; i++) {
        arguments[i] = arguments[i].toString()
        try {
            m += arguments[i].split('.')[1].length
        }
        catch (e) {
            m += 0
        }
    }
    for (var j = 0; j < arguments.length; j++) {
        ret = arguments[j] * Math.pow(10, m) + ret
    }
    ret = ret / Math.pow(10, m)
    return ret
}
转化成货币格式(千分位):多用于过滤函数
/**
 * @description 转化成货币格式(千分位)
 * @param {Number String} num 源数据
 * @param {String Number} digits 小数位数,默认不处理
 * @return {String}
 */
u.number.toCurrency = function(input, digits) {
    input = input + ''
    if (digits) input = u.number.toFixed(input, digits)
    if (input.indexOf('.') === -1) input += '.'

    return input.replace(/(\d)(?=(\d{3})+\.)/g, function($1) {
        return $1 + ','
    }).replace(/\.$/, '')
}

下载

npm i sg-utils -S

GitHub地址(记得给星哦)

https://github.com/shiguang0116/sg-utils


系列文章

JavaScript工具类(一):util.js创建及上传
JavaScript工具类(二):cookie缓存
JavaScript工具类(三):localStorage本地储存
JavaScript工具类(四):数据类型
JavaScript工具类(五):string字符串
JavaScript工具类(六):number数字
JavaScript工具类(七):array数组
JavaScript工具类(八):object对象
JavaScript工具类(九):date日期
JavaScript工具类(十):base64编码、解码
JavaScript工具类(十一):浏览器、移动端类型
JavaScript工具类(十二):validate表单验证
JavaScript工具类(十三):url路径处理
JavaScript工具类(十四):json数据格式
JavaScript工具类:util.js用法实例


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值