JAVA数字千分位和小数点的现实(处理金额问题) 您所在的位置:网站首页 java判断是否有小数点 JAVA数字千分位和小数点的现实(处理金额问题)

JAVA数字千分位和小数点的现实(处理金额问题)

2024-07-01 05:26| 来源: 网络整理| 查看: 265

金融类等项目通常对于金额较大的字段,通常要求千分位显示,数字保留两位小数,分装工具类方便以后工作需要:

-----------------------------------------------------------★菜鸟笔记,如有问题还望留下您宝贵的意见★-------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

说明:

1、井号(#)表示一位数字,逗号是用于分组分隔符的占位符,点是小数点的占位符。  2、如果小数点的右面,值有三位,但是式样只有两位。format方法通过四舍五入处理。

3、0 - 如果对应位置上没有数字,则用零代替 4、# - 如果对应位置上没有数字,则保持原样(不用补);如果最前、后为0,则保持为空。 5、正负数模板用分号(;)分割

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

方法一:

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类

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方法中测试了下

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 }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有