金融类等项目通常对于金额较大的字段,通常要求千分位显示,数字保留两位小数,分装工具类方便以后工作需要:
-----------------------------------------------------------★菜鸟笔记,如有问题还望留下您宝贵的意见★-------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
说明:
1、井号(#)表示一位数字,逗号是用于分组分隔符的占位符,点是小数点的占位符。
2、如果小数点的右面,值有三位,但是式样只有两位。format方法通过四舍五入处理。
3、0-如果对应位置上没有数字,则用零代替
4、#-如果对应位置上没有数字,则保持原样(不用补);如果最前、后为0,则保持为空。
5、正负数模板用分号(;)分割
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法一:
package com.mo.util;import java.text.DecimalFormat;/*** @ClassName: FmtMicrometer* @Description: 格式化数字为千分位工具类* @author wsqE-mail:* @date -6-1 下午02:25:57* */public class FmtMicrometer {/*** @Title: fmtMicrometer* @Description: 格式化数字为千分位* @param text* @return 设定文件* @return String 返回类型*/public static String fmtMicrometer(String text) {DecimalFormat df = null;if (text.indexOf(".") > 0) {if (text.length() - text.indexOf(".") - 1 == 0) {df = new DecimalFormat("###,##0.");} else if (text.length() - text.indexOf(".") - 1 == 1) {df = new DecimalFormat("###,##0.0");} else {df = new DecimalFormat("###,##0.00");}} else {df = new DecimalFormat("###,##0");}double number = 0.0;try {number = Double.parseDouble(text);} catch (Exception e) {number = 0.0;}return df.format(number);}}
在实体类中使用方法:Bean类
package com.mo.test;import com.mo.util.FmtMicrometer;/*** @ClassName: QueryXXDao* @Description: XX查询Bean类* @author wsqE-mail:* @date -6-1 下午04:15:10* */public class QueryXXDao {//其他字段省略private String money;public String getMoney() {return FmtMicrometer.fmtMicrometer(money);}public void setMoney(String money) {this.money = FmtMicrometer.fmtMicrometer(money);}@Overridepublic String toString() {return "QueryXXDao [money=" + money + ", getMoney()=" + getMoney()+ ", getClass()=" + getClass() + ", hashCode()=" + hashCode()+ ", toString()=" + super.toString() + "]";}}
使用时,直接调用方法就即可
================================================邪恶分隔符======================================================
方法二:
不推荐此方法,小数的话存在精度问题,也可自行封装方法处理,自己在main方法中测试了下
public static void main(String[] args) throws ParseException {NumberFormat numberFormat1 = NumberFormat.getNumberInstance();System.out.println(numberFormat1.format(11122.33)); //结果是11,122.33NumberFormat numberFormat2 = NumberFormat.getNumberInstance();System.out.println(numberFormat2.format(11122.00)); //结果是11,122NumberFormat numberFormat3 = NumberFormat.getNumberInstance();numberFormat3.setGroupingUsed(false); //设置了以后不会有千分位,如果不设置,默认是有的System.out.println(numberFormat3.format(11122.33)); //结果是11122.33 //将一个可能包含千分位的数字转换为不含千分位的形式:String amount1 = "13,000.00";double d1 = new DecimalFormat().parse(amount1).doubleValue(); //这里使用的是parse,不是formatSystem.out.println(String.valueOf(d1)); //结果是13000.0}