我是靠谱客的博主 秀丽高跟鞋,最近开发中收集的这篇文章主要介绍Java如何保留固定精确小数的位数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在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)是直接甩掉尾巴

最后

以上就是秀丽高跟鞋为你收集整理的Java如何保留固定精确小数的位数的全部内容,希望文章能够帮你解决Java如何保留固定精确小数的位数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部