博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用DecimalFormat格式化十进制数字的实际应用
阅读量:4322 次
发布时间:2019-06-06

本文共 2745 字,大约阅读时间需要 9 分钟。

在项目中,有时候我们需要将数字转换成特定的格式便于操作和使用。最常用的就是在操作价格数字的时候,需要将数字转换成小数点后保留两位小数,比如讲3.4转换成3.40

我们可以用DecimalFormat,它是NumberFormat的一个子类,它包含一个模式和一组符号:

0 一个数字

# 一个数字,不包括 0

. 小数的分隔符的占位符

, 分组分隔符的占位符

; 分隔格式。

- 缺省负数前缀。

% 乘以 100 和作为百分比显示

? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代替十进制分隔符。

X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。

举例说明:写一个函数将float类型的数字转换成包含两位小数,返回String类型。

1     public static String getFormatString(Float price){ 2         String parten = "#.##"; 3         DecimalFormat decimal = new DecimalFormat(parten); 4         String price2= decimal.format(price); 5         try { 6             price2.charAt( price2.indexOf(".")+2); 7         } 8         catch (Exception e) {         9             price2 = price2 +"0";10         }11         return price2;        12     }

 在这里有个问题需要读者思考,为什么需要加上try catch呢?

————————————————分隔符————————————————————————————————

//2017-3-24更新

今天又学到保留两位小数的其他办法:

import java.math.BigDecimal;    import java.text.DecimalFormat;    import java.text.NumberFormat;    public class format {        double f = 111231.5585;        public void m1() {            BigDecimal bg = new BigDecimal(f);            double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();            System.out.println(f1);        }        /**         * DecimalFormat转换最简便         */        public void m2() {            DecimalFormat df = new DecimalFormat("#.00");            System.out.println(df.format(f));        }        /**         * String.format打印最简便         */        public void m3() {            System.out.println(String.format("%.2f", f));        }        public void m4() {            NumberFormat nf = NumberFormat.getNumberInstance();            nf.setMaximumFractionDigits(2);            System.out.println(nf.format(f));        }        public static void main(String[] args) {            format f = new format();            f.m1();            f.m2();            f.m3();            f.m4();        }    }

————————————————分隔符————————————————————————————————

//2017-3-24更新 

之前代码中如果输入参数是123,返回的还是123,没有保留两位小数,现在调整代码如下可以解决问题:

public static String getFormatString(float price){        String parten = "#.##";        DecimalFormat decimal = new DecimalFormat(parten);        String price2= decimal.format(price);        int index = price2.indexOf(".");        System.out.println(index);        try {            if(index == -1){                price2 = price2 +".00";            }            price2.charAt( price2.indexOf(".")+2);        }        catch (Exception e) {                    price2 = price2 +"0";        }        return price2;            }

 2017-5-14:

除了自己写函数来处理外,String类提供的format方法功能十分强大,能处理整数,浮点,日期等等多种类型。

http://www.cnblogs.com/fsjohnhuang/p/4094777.html

转载于:https://www.cnblogs.com/clarke157/p/6386354.html

你可能感兴趣的文章
jquery validate使用方法
查看>>
DataNode 工作机制
查看>>
windows系统下安装MySQL
查看>>
错误提示总结
查看>>
实验二+070+胡阳洋
查看>>
Linux IPC实践(3) --具名FIFO
查看>>
Qt之模拟时钟
查看>>
第一次接触安卓--记于2015.8.21
查看>>
(转)在分层架构下寻找java web漏洞
查看>>
mac下多线程实现处理
查看>>
C++ ifstream ofstream
查看>>
跟初学者学习IbatisNet第四篇
查看>>
seL4环境配置
查看>>
Git报错:insufficient permission for adding an object to repository database .git/objects
查看>>
ajax跨域,携带cookie
查看>>
python 下载远程日志
查看>>
BZOJ 1600: [Usaco2008 Oct]建造栅栏( dp )
查看>>
nginx 高并发配置参数(转载)
查看>>
Jquery异步请求数据实例
查看>>
洛谷 CF937A Olympiad
查看>>