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

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

0 一个数字

# 一个数字,不包括 0

. 小数的分隔符的占位符

, 分组分隔符的占位符

; 分隔格式。

- 缺省负数前缀。

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

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

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

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

     public static String getFormatString(Float price){
String parten = "#.##";
DecimalFormat decimal = new DecimalFormat(parten);
String price2= decimal.format(price);
try {
price2.charAt( price2.indexOf(".")+2);
}
catch (Exception e) {
price2 = price2 +"0";
}
return price2;
}

在这里有个问题需要读者思考,为什么需要加上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(, 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();
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 == -){
price2 = price2 +".00";
}
price2.charAt( price2.indexOf(".")+);
}
catch (Exception e) {
price2 = price2 +"";
}
return price2;
}

2017-5-14:

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

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

最新文章

  1. SQLALchemy(连表)、paramiko
  2. web前端学习笔记(CSS变化宽度布局)
  3. 利用Hive实现求两条相邻数据时间差
  4. linux-01Red Hat Enterprise Linux 7(RHEL7)配置静态IP地址
  5. 如何查看postfix的版本
  6. window和nodejs作用域区别(待续)
  7. 2.CentOS更换阿里源
  8. python 如何判断对象是否为类(class)
  9. 常用的模式、JSON与DTO
  10. mysql的my.ini文件详解
  11. LNMP一键包安装后解决MySQL无法远程连接问题
  12. 与前端(使用vue框架)对接的问题
  13. 2.12 C++ explicit关键字详解
  14. JAVA个人小程序GUI篇-收银(标签、按钮、复选框、下拉标、文本域、表格······)
  15. js跨域请求(jsonp)
  16. 【笔记】javascript权威指南-第二章-词法结构
  17. caffe安装编译问题-ImportError: No module named google.protobuf.internal
  18. PostgreSQL的索引膨胀
  19. 【转载】input只改变光标的颜色 不改变字的颜色
  20. CSS 滤镜技巧与细节

热门文章

  1. 深入理解ES6之函数
  2. 第11章 Media Queries 与Responsive 设计
  3. ImportError: No module named bs4错误解决方法
  4. Common in Hardware & Software
  5. 【Python】回文palindrome——利用字符串反转
  6. ArcGIS 10.1 如何连接数据库(转)
  7. 微信小程序——代码构成
  8. 两步让你的mobile traffic通过fiddler代理传送
  9. 基于bootstrap的手机界面tab样式调整
  10. SQL Server ->> WITH RESULT SETS子句