java開發小數點保留的幾種方案

第一種方法

使用DecimalFormat類

舉個例子,假如我們需要保留兩位小數,我們可以這樣寫

DecimalFormat df = new DecimalFormat("0.00");

測試如下:

double d = 0.200;
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(d));

輸出結果爲:
0.20

經測試,不管double d的值爲多少,最後結果都是正常的兩位小數。

同理若是保留一位小數DecimalFormat df = new DecimalFormat("0.0");其他以此類推

若是這種寫法DecimalFormat df = new DecimalFormat("0.00"),不管傳入的任何值,均保留兩位小數

還有一種寫法是這樣:

double d = 41.123;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(d));

輸出結果爲:
41.12

總結:若是這種寫法DecimalFormat df = new DecimalFormat("#.##"),則保留小數點後面不爲0的兩位小數,這種寫法不能保證保留2爲小數,但能保證最後一位數不爲0;

第二種方法:

測試:

double d = 0.6544;
String s=String.format("%.2f",d);
System.out.println(s);

輸出結果爲:
0.65

其中String s=String.format("%.2f",d)表示小數點後任意兩位小數,其中2爲表示兩位小數,若需要三位小數,把2改爲3即可,其他同理。

總結:這種方法不管傳入的值是多少,均保留兩位小數,並且符合四捨五入的規則。

第三種方法:

使用BigDecimal類

測試:

double d = 1.000;
BigDecimal bd=new BigDecimal(d);
double d1=bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d1);

輸入結果:1.0

總結:使用這種寫法若小數點後均爲零,則保留一位小數,並且有四捨五入的規則。

以下爲Java測試類

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class Test {
    public static void main(String[] args) {
        double d = 1.19;
        System.out.println(formatDecimal4(d));
    }

    public static String formatDecimal1(double d) {
        DecimalFormat df = new DecimalFormat("0.00");
        return df.format(d);
    }

    public static String formatDecimal2(double d) {
        DecimalFormat df = new DecimalFormat("#.##");
        return df.format(d);
    }
    public static String formatDecimal3(double d){
        return String.format("%.2f",d);
    }

    public static double formatDecimal4(double d){
        BigDecimal bd=new BigDecimal(d);
        double d1=bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
        return d1;
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章