淘先锋技术网

首页 1 2 3 4 5 6 7

double类型可以保留几位小数?

下面是五种处理方法,使double类型的数据保留2位小数。

/*具体代码*/

import java.math.BigDecimal;

import java.math.RoundingMode;

import java.text.DecimalFormat;

public class Test {

double[] num = {3.4567, 3, 0.4567, 2343.333, 133, 3.1415};

public void func() {

int i = 1;

for(double d:num){

System.out.println("测试"+(i++)+" = "+d);

String dstr = String.valueOf(d);

// 第一种:

java.text.DecimalFormat df = new java.text.DecimalFormat("#.##");

System.out.println("第一种="+df.format(d));

// 第二种:通过下面的结果可以看出,一二两种都可以,第一种如果小数部分是0的话就只显示整数,第二种始终显示两位小数

BigDecimal bd = new BigDecimal(dstr);

bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);

System.out.println("第二种="+bd);

// 第三种:

long l = Math.round(d * 100); // 四舍五入

double ret = l / 100.0; // 注意:使用 100.0 而不是 100

System.out.println("第三种="+ret);

// 第四种:

d = ((int) (d * 100)) / 100;

System.out.println("第四种="+d);

//第五种

DecimalFormat df2 = new DecimalFormat("#.00");

//df2.setRoundingMode(RoundingMode.HALF_UP);

System.out.println("第五种="+df2.format(d));

System.out.println("-------------------------");

}

}

public static void main(String[] args) {

Test t = new Test();

t.func();

}

}

运行结果:

测试1 = 3.4567

第一种=3.46

第二种=3.46

第三种=3.46

第四种=3.0

第五种=3.00

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

测试2 = 3.0

第一种=3

第二种=3.00

第三种=3.0

第四种=3.0

第五种=3.00

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

测试3 = 0.4567

第一种=0.46

第二种=0.46

第三种=0.46

第四种=0.0

第五种=.00

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

测试4 = 2343.333

第一种=2343.33

第二种=2343.33

第三种=2343.33

第四种=2343.0

第五种=2343.00

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

测试5 = 133.0

第一种=133

第二种=133.00

第三种=133.0

第四种=133.0

第五种=133.00

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

测试6 = 3.1415

第一种=3.14

第二种=3.14

第三种=3.14

第四种=3.0

第五种=3.00

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

java double和,double类型可以保留几位小数