代码记录:
页面上的数据太大导致显示的时候是科学计数法,所以需要去掉科学计数
/**
* 自定义格式化数据
* $.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,保存修改的时候需要在后台进行转换。而且页面的验证什么的都需要进行修改,牵扯的模块比较多,在权衡工作量的情况下选择在前台进行处理。