菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
2806
0

【记录】通用封装函数——四则运算

原创
05/13 14:22
阅读数 1397

加法

add = (v1, v2) => {
    v1 += '';
    v2 += '';
    let r1, r2;
    try {
        r1 = v1.toString().split('.')[1].length;
    } catch (e) {
        r1 = 0;
    }
    try {
        r2 = v2.toString().split('.')[1].length;
    } catch (e) {
        r2 = 0;
    }
    const m = 10 ** Math.max(r1, r2);
    return (mul(v1, m) + mul(v2, m)) / m;
};

减法

sub = (v1, v2) => {
    return add(v1, -v2);
};

乘法

mul = (v1, v2) => {
    v1 += '';
    v2 += '';
    let m = 0;
    const s1 = v1.toString();
    const s2 = v2.toString();
    try {
        m += s1.split('.')[1].length;
    } catch (e) {
    }
    try {
        m += s2.split('.')[1].length;
    } catch (e) {
    }
    return (Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) / 10 ** m;
};

除法

div = (v1, v2) => {
    v1 += '';
    v2 += '';
    let t1 = 0,
        t2 = 0;
    try {
        t1 = v1.toString().split('.')[1].length;
    } catch (e) {
    }
    try {
        t2 = v2.toString().split('.')[1].length;
    } catch (e) {
    }
    const r1 = Number(v1.toString().replace('.', ''));
    const r2 = Number(v2.toString().replace('.', ''));
    return (r1 / r2) * 10 ** (t2 - t1);
};

其它

正数向上取整

// 3453.1 → 4000
ceil = v1 => {
    v1 = Math.ceil(v1);
    if (v1 === 0) return v1;
    let num = Math.pow(10, v1.toString().length - 1);
    return mul(Math.ceil(div(v1, num)), num);
};

首字母大写

// github → Github
firstUpper = str => {
    return str.charAt(0).toUpperCase() + str.slice(1);
};

发表评论

0/200
2806 点赞
0 评论
收藏
为你推荐 换一批