java 数字格式化:小数点、百分比 NumberFormat Decimalformat
在处理datatable中数字时,可能为了显示的美观,会要求数字、金额...处理成类似123,456.78这样,每三位加逗号,保留两位小数,这是最近我遇到的,当然还有其他的格式
后台处理方法:
1:Decimalformat df1 = new Decimalformat("####.000");
System.out.println(df1.format(1234.56));
显示:1234.560 2:NumberFormat nf = NumberFormat.getPercentInstance();
// nf.setMinimumFractionDigits( 2 ); 保留到小数点后几位 显示:47.00%
System.out.println(nf.format(0.47)); 显示:47%
(法二) DecimalFormat df1 = new DecimalFormat("##.00%");
//##.00% 百分比格式,后面不足2位的用0补齐
baifenbi= df1.format(fen); 显示:47.00%
3:DecimalFormat df = new DecimalFormat("###,##0.00");
System.out.println(nf.format(24.7));
显示:24.70
System.out.println(nf.format(23123.47));
显示:123,23.47
补充:0.00、0.01; 0.00%、0.12%这样的数据,如果按照上面的格式可能会造成数据显示成:.00、.01; .00%、.12%,怎么办呢?只要把格式改成:
DecimalFormat df1 = new DecimalFormat("0.00");
DecimalFormat df2 = new DecimalFormat("0.00%");
df1.formatI(number);
df2.formatI(number);
显示:0.00、0.01; 0.00%、0.12%
jQuery处理方法:
1:保留两位小数
var Num=3 var Price=11 var ss = (Number(Price*Num)).toFixed(2);
2:加载DataTable处理数据时
render : function(data, type, row, meta) {
if(data != ""){
data = fmoney(data, 2);
}
return data;
}
然后在公共js里加上这一段:
function fmoney(s, n) {
n = n > 0 && n <= 20 ? n : 2; //保留小数点后几位,大于0小于20,否则默认两位
s = parseFloat((s + "").replace(/[^d.-]/g, "")).toFixed(n) + "";
var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1];
t = "";
for (i = 0; i < l.length; i++) {
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
}
return t.split("").reverse().join("") + "." + r; }
当然前提是后台传过来的数据是float、BigDecimal、Decimal...
3:页面直接获取参数
添加标签<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
然后用标签包住数据<fmt:formatNumber value="${order.OdrRefundAmount }" pattern="#,##0.00#"/>
4:jQuery插件方法
引入jquery和插件(jquery省略
<script src="jquery.formatCurrency-1.4.0.js" type="text/javascript" ></script>
使用插件API方法,这种会在金额前面加上$符号
$('.label').formatCurrency();