应该每个学java的人都知道java的保留两位小数,如下:
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
df.format(数字);
可是,我想问的是:
例如:
[code="java"]
/*
* java保留两位小数
*/
import java.text.DecimalFormat;
public class liangweixiaoshu {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义数据格式
DecimalFormat myformat = new DecimalFormat("#####0.00");
double d1 = 3.23456;
double d2 = 0.0;
double d3 = 2.0;
double a = myformat.format(d1+d2) + 0.0256; //这句是在编译的时候就报错的,
System.out.println(myformat.format(d1+d2)); //这句是完全正确的语句
}
}
[/code]
那么,就是说,在中间过程不能保留两位小数。那如果我想保留该怎么呢弄呢?
主要是DecimalFormat.format返回的是StringBuffer,对这个类型没有定义+运算符,所以会报错。Format主要是针对数据到字符串的格式化,而不是针对数据自身的四舍五入之类的转换。
其实用java.lang.Math.round()来四舍五入不够用么……像是
[code="java"]double d1 = 3.23456;
double d2 = 2.0;
double d3 = Math.round((d1 + d2) * 100) / 100.0;[/code]
之类的
[quote] double a = myformat.format(d1+d2) + 0.0256; //这句是在编译的时候就报错的, [/quote]
数据对象都不一样,当然报错。
[quote]那么,就是说,在中间过程不能保留两位小数。那如果我想保留该怎么呢弄呢?[/quote]
用BigDecimal吧!