关键词搜索

源码搜索 ×
×

(Java)实现保留小数位的几种方法

发布2020-02-03浏览11594次

详情内容

一、通过 BigDecimal 类实现

主要是通过 BigDecimal 类中的setScale 方法,或者转换为字符串

源码:

public BigDecimal setScale(int newScale,int roundingMode)

    其中 setScale 方法需要传入两个参数,一个是要保留的位数 newScale,另一个是要保留的类型。

    1. BigDecimal.ROUND_HALF_UPBigDecimal.ROUND_HALF_DOWN 都表示四舍五入
    import java.math.BigDecimal;
    
    public class Test{
        public static void main(String[] args) {
            double date = 123.456;
            double d1,d2;
            BigDecimal b = new BigDecimal(date);
            d1 = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
            d2 = b.setScale(2,BigDecimal.ROUND_HALF_DOWN).doubleValue();
            System.out.println(d1);
            System.out.println(d2);
        }
    }
    
      2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述
    2. ROUND_UP,只要弃位非0就进一位

    import java.math.BigDecimal;
    
    public class Test{
        public static void main(String[] args) {
            double date = 123.436;
            double d1,d2;
            BigDecimal b = new BigDecimal(date);
            d1 = b.setScale(1,BigDecimal.ROUND_UP).doubleValue();
            System.out.println(d1);
        }
    }
    
      2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    3. ROUND_DOWN,不管如何都不会进位

    import java.math.BigDecimal;
    
    public class Test{
        public static void main(String[] args) {
            double date = 123.466;
            double d1,d2;
            BigDecimal b = new BigDecimal(date);
            d1 = b.setScale(1,BigDecimal.ROUND_DOWN).doubleValue();
            System.out.println(d1);
        }
    }
    
      2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    4. ROUND_CEILING,向正无穷方向舍入

    若为正数,类似于ROUND_UP
    若为负数,类似于ROUND_DOWN
    
      2
    import java.math.BigDecimal;
    
    public class Test{
        public static void main(String[] args) {
            double date1 = 123.466777;
            double date2 = -123.466777;
            double d1,d2;
            BigDecimal b1 = new BigDecimal(date1);
            BigDecimal b2 = new BigDecimal(date2);
            d1 = b1.setScale(2,BigDecimal.ROUND_CEILING).doubleValue();
            d2 = b2.setScale(2,BigDecimal.ROUND_CEILING).doubleValue();
            System.out.println(d1);
            System.out.println(d2);
        }
    }
    
      2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述
    5. ROUND_FLOOR,向负无穷方向舍入

    ```java
    若为负数,类似于ROUND_UP
    若为正数,类似于ROUND_DOWN
    
      2
    • 3
    import java.math.BigDecimal;
    
    public class Test{
        public static void main(String[] args) {
            double date1 = 123.466777;
            double date2 = -123.466777;
            double d1,d2;
            BigDecimal b1 = new BigDecimal(date1);
            BigDecimal b2 = new BigDecimal(date2);
            d1 = b1.setScale(2,BigDecimal.ROUND_FLOOR).doubleValue();
            d2 = b2.setScale(2,BigDecimal.ROUND_FLOOR).doubleValue();
            System.out.println(d1);
            System.out.println(d2);
        }
    }
    
      2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    二、通过String 实现

    %.2f 表示保留后两位,能四舍五入

    public class Root{
        public static void main(String[] args) {
            double d = 123.456;
            String result;
            result = String.format("%.2f",d);
            System.out.println(result);
        }
    }
    
      2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载