Java基础--double保留小数点后几位

先说在作业中用到的

DecimalFormat df = new DecimalFormat("0.00");

String doubleNumAsString = df.format(doubleNum);

然后再用Double.valueOf()转过来。

DecimalFormat这个类深究起来也是很深,所以暂且知道怎么用吧。

这里就借别人的测试和结论了:

import java.text.DecimalFormat;

public class DecimalFormatTest
{
    public static void main(String[]args){
        
        DecimalFormat df1,df2;
        
        System.out.println("整数部分0/#的区别");
        
        df1 = new DecimalFormat("#.00");
        df2 = new DecimalFormat("0.00");
        
        System.out.println(df1.format(0.1)); // .10
        System.out.println(df2.format(0.1)); // 0.10  
        
        System.out.println("小数部分0/#的区别");
        
        df1 = new DecimalFormat("0.00");
        df2 = new DecimalFormat("0.##");
        
        System.out.println(df1.format(0.1)); // 0.10
        System.out.println(df2.format(0.1)); // 0.1
        
        System.out.println(df1.format(0.006)); // 0.01
        System.out.println(df2.format(0.006)); // 0.01
        
        System.out.println("3、整数部分有多位");
        
        df1 = new DecimalFormat("0.00");
        df2 = new DecimalFormat("#.00");
        
        System.out.println(df1.format(2)); // 2.00
        System.out.println(df2.format(2)); // 2.00
        
        System.out.println(df1.format(20)); // 20.00
        System.out.println(df2.format(20)); // 20.00
        
        System.out.println(df1.format(200)); // 200.00
        System.out.println(df2.format(200)); // 200.00
        
        
    }
}

简单来说,构造的时候0是占位符,#表示如果这位数字不存在就不显示,它代表最大位数。所以对于小数如果用#.00,那个位就不会显示。对于小数部分都满足四舍五入

第二种比较常见的四舍五入方法是Math.round()

Math.round(int i)的取整是i加上0.5后向下取整,比如Math.round(-2.5)就是-2,Math.round(3.5)是4。如何用来保留小数点后几位呢?Math.round(doubleNum * 100) / 100 就保留了小数点后2位,当然由于本身不是完全意义上的四舍五入,比如-2.5不保留,那直接会返回-2,不成立。

第三种是利用Stirng.format("%.2f",doubleNum)保留2位小数,它是可以做到四舍五入的,也可以改其他格式。返回值是String。

这个方法最大的好处可以对多个值同时格式处理,然后返回一个字符串。直接放一个链接在之后web开发的时候再深入。

https://blog.csdn.net/anita9999/article/details/82346552

猜你喜欢

转载自www.cnblogs.com/2333wzl/p/12344032.html