Java如何保留固定精确小数的位数 您所在的位置:网站首页 double精确到几位整数 Java如何保留固定精确小数的位数

Java如何保留固定精确小数的位数

2024-07-01 22:58| 来源: 网络整理| 查看: 265

在Java里,常常会遇到需要保留小数位数,以及小数精确到多少位的问题,那么有几种实现方法呢?

第一种(也是最简单粗暴无脑的一种): 1.先b*100,小数点向右移动两位变成12345.6 2.调用Math类下的取整方法round()对b取整:b=Math.round(b); 就变成了12346 3.再除以100.0达到保留两位小数的目的 即123.46

double b = 123.456; System.out.println((Math.round(b * 100)) / 100.0);

简而言之:要保留几位就先扩大10的几次方取整后再缩小相同的倍数. 值得一提的是,Math类下的取整方法round()采用的是四舍五入的方法,所以上面这个精确的模式也是四舍五入,例如:

double a1=1.4; double b1=1.5; System.out.println(Math.round(a1));//输出结果1 System.out.println(Math.round(b1));//输出结果2

第二种:用BigDecimal中的专门精确小数位数的setScale方法:

//把1234.567赋值给变量a0 BigDecimal a0 = new BigDecimal(1234.567); //保留两位,以HALF_UP,四舍五入的形式:输出1234.57 System.out.println(a0.setScale(2, RoundingMode.HALF_UP)); //保留一位,以CEILING,直接进位的形式:输出1234.6 System.out.println(a0.setScale(1,RoundingMode.CEILING)); //保留一位,以FLOOR,直接甩掉尾巴部分的形式:输出1234.5 System.out.println(a0.setScale(1,RoundingMode.FLOOR));

注意: 方法setScale(参数一,参数二),其中第一个参数是填保留小数的位数,想保留几位就填几,第二个参数是精确的模式:四舍五入还是直接进1,或者直接甩掉尾巴 RoundingMode.HALF_UP:表示过半(HALF)_进位(UP),也就是四舍五入,RoundingMode.CEILING)是直接进1,RoundingMode.FLOOR)是直接甩掉尾巴



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有