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;
    }

}

 

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