jquery 数字格式化

代码记录:

页面上的数据太大导致显示的时候是科学计数法,所以需要去掉科学计数


/**
 * 自定义格式化数据
 * $.format(2000000010, 3, ',')---结果为 2,000,000,010
 */
(function($) {
    $.extend({
        format : function(str, step, splitor) {
            str = str.toString();
            var len = str.length;
            if(len > step) {
                 var l1 = len%step,
                     l2 = parseInt(len/step),
                     arr = [],
                     first = str.substr(0, l1);
                 if(first != '') {
                     arr.push(first);
                 };
                 for(var i=0; i<l2 ; i++) {
                     arr.push(str.substr(l1 + i*step, step));                                   
                 };
                 str = arr.join(splitor);
             };
             return str;
        }
    });
})(jQuery);

  //调用方式:$.format(2000000010, 3, ',');



单独写个JS文件,页面上使用:

<script type="text/javascript" src="<%=path%>/js/format.js"></script>
<script type="text/javascript">
 $(function(){
$(':input[type="text"]').each(function(){
var val_ = $(this).val();
$(this).val($.format(Number(val_),3,''));
});
 });
</script>


系统遇到这个要求比较特殊,开发中一般用不到。产生这个问题的原因:

1、这个是测试组进行数值测试的时候提出的bug修改。其实系统现实运行中几乎达不到8位数的数值。因为我们这个系统的数值单位都是以“万”为初始值。

2、数据库设计的时候只考虑了数据是否会超出范围,所以使用的是double\long,网上有网友提示,使用bigdecimal处理,可以避免这个问题。(这个我没有测试过)

3、我们这个数值显示,是需要可以随时修改随时保存的,java对应的类型是double和long,通过在后台数值格式化,

DecimalFormat df=new DecimalFormat( "#,##0.00");这样导致页面的数值是String,保存修改的时候需要在后台进行转换。而且页面的验证什么的都需要进行修改,牵扯的模块比较多,在权衡工作量的情况下选择在前台进行处理。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值