js 金额用,隔开(千分位加逗号) 例如 100,222.123

JavaScript0120

js 金额用,隔开(千分位加逗号) 例如 100,222.123,第1张

numFormat(num) {

        var c = (num.toString().indexOf ('.') !== -1) ? num.toLocaleString() : num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')

        return c

    }

console.log(this.numFormat(20181029.120))

//格式化钱数,三位加一逗号

function toThousands(number) {

number = number +""

number = number.replace(/\,/g, "")

if(isNaN(number) || number == "")return ""

number = Math.round(number * 100) / 100

    if (number <0)

        return '-' + outputdollars(Math.floor(Math.abs(number) - 0) + '') + outputcents(Math.abs(number) - 0)

    else

        return outputdollars(Math.floor(number - 0) + '') + outputcents(number - 0)

}

//格式化金额

function outputdollars(number) {

    if (number.length <= 3)

        return (number == '' ? '0' : number)

    else {

        var mod = number.length % 3

        var output = (mod == 0 ? '' : (number.substring(0, mod)))

        for (i = 0i <Math.floor(number.length / 3)i++) {

            if ((mod == 0) &&(i == 0))

                output += number.substring(mod + 3 * i, mod + 3 * i + 3)

            else

                output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3)

        }

        return (output)

    }

}

function outputcents(amount) {

    amount = Math.round(((amount) - Math.floor(amount)) * 100)

    return (amount <10 ? '.0' + amount : '.' + amount)

}

我们在日常开发中后台返回的金钱常常只是一个数字,比如12345.67,这时需要做一下转化,把它变成12,345.67这样的金钱格式,我想到的方法如下:

整体思路就是先拿到数据后,先把它当成字符串处理,通过小数点,分开整数和小数部分,然后处理整数部分,如果整数部分小于等于3位,直接用就可以啦,如果大于3位,那么就把这个整数最后3位先存起来且前面加上逗号,然后割掉这个整数的这3位,继续重复这个判断,每次截取的后三位都拼到上一次截取结果的前面,直到整数部分小于等于三位了,就可以和存储的结果拼在一起,再拼上小数部分就可以啦。

希望大家能有更好的方法~

<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script><!--引入jquery库-->

  <style>

     * {margin:0padding:0}

 .parentCls {margin:0position:relative}

 .inputElem {height:24px border:1px solid #ddd outline:none }

 #fixval {position:absolute top:-35px left:0 display:none border:1px solid #ddd background:#fff font-size:18px font-weight:bold color:#F60 padding:5px }

  </style>

  <div style="height:50px"></div>

<div class="parentCls">

<input type="text" class="inputElem" autocomplete = "off" maxlength="18"/>

<div id="fixval"></div>

</div>

<script>

$(function(){

$(".inputElem").keyup(function(event){

var txt = $(this).val()

var keyCode = event.which

if ( txt.length<=0 ) {

$("#fixval").hide()

}else{

if ( $.isNumeric(txt) !== true || keyCode==32 ){//判断输入类型,并去除空格

$(this).val( txt.slice(0,-1) )  //截掉非数字和空格

return false

}

var re=/(?=(?!\b)(\d{3})+$)/g //分割数字 1,000

txt = txt.replace(re,",")

$("#fixval").html(txt).show()

}

})

})

</script>