为了账号安全,请及时绑定邮箱和手机立即绑定

如果一千或更多,则将数字格式化为2.5K,否则为900

如果一千或更多,则将数字格式化为2.5K,否则为900

Smart猫小萌 2019-12-13 09:22:13
我需要以等于1K或1K,1.1K,1.2K,1.9K等的1K格式显示货币值,如果不是偶数,则为1000,否则显示正常的500、100、250等,使用javascript格式化数字?
查看完整描述

3 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

听起来这应该适合您:


function kFormatter(num) {

    return Math.abs(num) > 999 ? Math.sign(num)*((Math.abs(num)/1000).toFixed(1)) + 'k' : Math.sign(num)*Math.abs(num)

}

    

console.log(kFormatter(1200)); // 1.2k

console.log(kFormatter(-1200)); // -1.2k

console.log(kFormatter(900)); // 900

console.log(kFormatter(-900)); // -900


查看完整回答
反对 回复 2019-12-13
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

这是一个避免所有if语句(使用的功能Math)的简单解决方案。


var SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"];


function abbreviateNumber(number){


    // what tier? (determines SI symbol)

    var tier = Math.log10(number) / 3 | 0;


    // if zero, we don't need a suffix

    if(tier == 0) return number;


    // get suffix and determine scale

    var suffix = SI_SYMBOL[tier];

    var scale = Math.pow(10, tier * 3);


    // scale the number

    var scaled = number / scale;


    // format number and add suffix

    return scaled.toFixed(1) + suffix;

}


查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 513 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信