format的参数为数值类型或者BigDecimal对象。
保留一位小数参数用0.0,保留两位用0.00。
可以用“,”和占位符来格式化输出的字符串,隔开,如参数为0,000.00表示保留2位小数,整数部分三位一逗
eg:
1:new DecimalFormat("00.000").format(pi) //结果:03.142
2:new DecimalFormat("##.###").format(pi) //结果:3.142
都是对pi进行格式化,但第一个的结果是03.142,第二个的结果是3.142
这是什么原因呢?
0和#都是占位符,但在不同的地方,作用不一样。下面对他们做了具体的比较。
希望对大家有所帮助。
0:
比实际数字的位数多,不足的地方用0补上。
new DecimalFormat("00.00").format(3.14) //结果:03.14
new DecimalFormat("0.000").format(3.14) //结果: 3.140
new DecimalFormat("00.000").format(3.14) //结果:03.140
比实际数字的位数少:整数部分不改动,小数部分,四舍五入
new DecimalFormat("0.000").format(13.146) //结果:13.146
new DecimalFormat("00.00").format(13.146) //结果:13.15
new DecimalFormat("0.00").format(13.146) //结果:13.15
#:
比实际数字的位数多,不变。
new DecimalFormat("##.##").format(3.14) //结果:3.14
new DecimalFormat("#.###").format(3.14) //结果: 3.14
new DecimalFormat("##.###").format(3.14) //结果:3.14
比实际数字的位数少:整数部分不改动,小数部分,四舍五入
new DecimalFormat("#.###").format(13.146) //结果:13.146
new DecimalFormat("##.##").format(13.146) //结果:13.15
new DecimalFormat("#.##").format(13.146) //结果:13.15
其他的一些用法,(添加百分号,千分号,科学计数法,自定义正负数模板)
可参照
http://jff.iteye.com/blog/576737
http://blog.csdn.net/marcoleung/article/details/176514
保留小数:java.text.NumberFormat format 方法的使用
获取实例:getInstance()返回当前默认语言环境的通用数值格式
getCurrencyInstance()
返回当前默认语言环境的货币格式
getCurrencyInstance()
返回当前默认语言环境的货币格式 getNumberInstance()
返回当前默认语言环境的通用数值格式
getNumberInstance()
返回当前默认语言环境的通用数值格式
getPercentInstance()
返回当前默认语言环境的百分比格式
getPercentInstance()
返回当前默认语言环境的百分比格式
设置小数的位数条件:
setMaximumFractionDigits(int newValue)
设置数的小数部分所允许的最大位数
setMaximumFractionDigits(int newValue)
设置数的小数部分所允许的最大位数
setMaximumIntegerDigits(int newValue)
设置数的整数部分所允许的最大位数
setMaximumIntegerDigits(int newValue)
设置数的整数部分所允许的最大位数 setMinimumFractionDigits(int newValue)
设置数的小数部分所允许的最小位数
setMinimumFractionDigits(int newValue)
设置数的小数部分所允许的最小位数 setMinimumIntegerDigits(int newValue)
设置数的整数部分所允许的最小位数
setMinimumIntegerDigits(int newValue)
设置数的整数部分所允许的最小位数 使用format方法默认显示整数部分三位一逗,小数按照设置的条件来舍入,个人感觉用他的子类DecimalFormat更好用
保留小数:java.math.BigDecimal
一般来说,可以使用
BigDecimal
的构造方法或者静态方法的
valueOf()
方法把基本类型的变量构建成
BigDecimal
对象
1 BigDecimal b1 = new BigDecimal(Double.toString(0.48)); 2 BigDecimal b2 = BigDecimal.valueOf(0.48);
对于常用的加,减,乘,除,BigDecimal类提供了相应的成员方法。
1 public BigDecimal add(BigDecimal value); //加法 2 public BigDecimal subtract(BigDecimal value); //减法 3 public BigDecimal multiply(BigDecimal value); //乘法 4 public BigDecimal divide(BigDecimal value); //除法
进行相应的计算后,我们可能需要将BigDecimal对象转换成相应的基本数据类型的变量,可以使用floatValue(),doubleValue()等方法
ROUND_UP舍入远离零的舍入模式,ROUND_DOWN
接近零的舍入模式
)
double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();