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>