下面是五種處理方法,使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.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
下面是五種處理方法,使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
-------------------------