JAVA数字千分位和小数点的现实(处理金额问题)
2017-11-30 11:57
579 查看
金融类等项目通常对于金额较大的字段,通常要求千分位显示,数字保留两位小数,分装工具类方便以后工作需要:
-----------------------------------------------------------★菜鸟笔记,如有问题还望留下您宝贵的意见★-------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
说明:
1、井号(#)表示一位数字,逗号是用于分组分隔符的占位符,点是小数点的占位符。
2、如果小数点的右面,值有三位,但是式样只有两位。format方法通过四舍五入处理。
3、0 - 如果对应位置上没有数字,则用零代替
4、# - 如果对应位置上没有数字,则保持原样(不用补);如果最前、后为0,则保持为空。
5、正负数模板用分号(;)分割
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法一:
[java] view
plain copy
package com.mo.util;
import java.text.DecimalFormat;
/**
* @ClassName: FmtMicrometer
* @Description: 格式化数字为千分位工具类
* @author wsq E-mail:
* @date 2017-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类
[java] view
plain copy
package com.mo.test;
import com.mo.util.FmtMicrometer;
/**
* @ClassName: QueryXXDao
* @Description: XX查询Bean类
* @author wsq E-mail:
* @date 2017-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);
}
@Override
public String toString() {
return "QueryXXDao [money=" + money + ", getMoney()=" + getMoney()
+ ", getClass()=" + getClass() + ", hashCode()=" + hashCode()
+ ", toString()=" + super.toString() + "]";
}
}
使用时,直接调用方法就即可
================================================邪恶分隔符======================================================
方法二:
不推荐此方法,小数的话存在精度问题,也可自行封装方法处理,自己在main方法中测试了下
[java] view
plain copy
public static void main(String[] args) throws ParseException {
NumberFormat numberFormat1 = NumberFormat.getNumberInstance();
System.out.println(numberFormat1.format(11122.33)); //结果是11,122.33
NumberFormat numberFormat2 = NumberFormat.getNumberInstance();
System.out.println(numberFormat2.format(11122.00)); //结果是11,122
NumberFormat 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,不是format
System.out.println(String.valueOf(d1)); //结果是13000.0
}
-----------------------------------------------------------★菜鸟笔记,如有问题还望留下您宝贵的意见★-------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
说明:
1、井号(#)表示一位数字,逗号是用于分组分隔符的占位符,点是小数点的占位符。
2、如果小数点的右面,值有三位,但是式样只有两位。format方法通过四舍五入处理。
3、0 - 如果对应位置上没有数字,则用零代替
4、# - 如果对应位置上没有数字,则保持原样(不用补);如果最前、后为0,则保持为空。
5、正负数模板用分号(;)分割
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法一:
[java] view
plain copy
package com.mo.util;
import java.text.DecimalFormat;
/**
* @ClassName: FmtMicrometer
* @Description: 格式化数字为千分位工具类
* @author wsq E-mail:
* @date 2017-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类
[java] view
plain copy
package com.mo.test;
import com.mo.util.FmtMicrometer;
/**
* @ClassName: QueryXXDao
* @Description: XX查询Bean类
* @author wsq E-mail:
* @date 2017-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);
}
@Override
public String toString() {
return "QueryXXDao [money=" + money + ", getMoney()=" + getMoney()
+ ", getClass()=" + getClass() + ", hashCode()=" + hashCode()
+ ", toString()=" + super.toString() + "]";
}
}
使用时,直接调用方法就即可
================================================邪恶分隔符======================================================
方法二:
不推荐此方法,小数的话存在精度问题,也可自行封装方法处理,自己在main方法中测试了下
[java] view
plain copy
public static void main(String[] args) throws ParseException {
NumberFormat numberFormat1 = NumberFormat.getNumberInstance();
System.out.println(numberFormat1.format(11122.33)); //结果是11,122.33
NumberFormat numberFormat2 = NumberFormat.getNumberInstance();
System.out.println(numberFormat2.format(11122.00)); //结果是11,122
NumberFormat 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,不是format
System.out.println(String.valueOf(d1)); //结果是13000.0
}
相关文章推荐
- JAVA数字千分位和小数点的现实(处理金额问题)
- java及javascript处理金额小数点问题
- Oracle EBS 如何设置事务处理分配行金额、成本和资源费率等等数字小数点位数?
- Java:处理不同国家的千分位和小数点
- 星期一处理GFS_S窗口是的单价,金额,数量,只能输入数字,并用小数点显示Format函数!
- 数字的处理方法(保留小数点两位、将数字转化为千分位格式)
- 处理金额的千分位转为数字
- 两行解决java读取excel文件内数字显示为小数点或者科学计数法问题
- Java处理Oracle数据库小数点前面的0丢失问题
- java 数字格式化处理(小数点 百分号等)
- java操作Excel处理数字类型的精度损失问题验证
- 关于JS校验金额的问题(只能输入数字和小数点)
- java中数字基本运算、金额运算精度问题小结
- 对 java 数字小数点后位数进行处理
- 数字转金额问题(java)
- java 数字格式化处理(小数点 百分号等)
- Java数字、货币值和百分数等的格式化处理
- JAVA Web 安全机制----使用filter验证session用户和页面缓存问题处理
- JAVA基础应用: 处理Java中的日期问题
- JAVA中如何处理中文的全角和半角问题- -