BigDecimal.setScale用法总结

1. BigDecimalnum1=newBigDecimal(2.225667);//这种写法不允许,会造成精度损失2. BigDecimalnum2=newBigDecimal(2);//这种写法是可以的3. BigDecimalnum=newBigDecimal("2.225667");//一般都会这样写最好4. intcount=num.scale();  …

大家好,又见面了,我是你们的朋友全栈君。


1. BigDecimal num1 = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失

2. BigDecimal num2 = new BigDecimal(2);//这种写法是可以的

3. BigDecimal num = new BigDecimal(“2.225667”);//一般都会这样写最好

4. int count = num.scale();

        System.out.println(count);//6 返回的是小数点后位数


好了,下面开始正式介绍知识点啦~~~~~~

1. ROUND_DOWN

BigDecimal b = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_DOWN);System.out.println(b);//2.22 直接去掉多余的位数


2. ROUND_UP

BigDecimal c = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_UP);System.out.println(c);//2.23 跟上面相反,进位处理

3. ROUND_CEILING

天花板(向上),正数进位向上,负数舍位向上

BigDecimal f = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_CEILING);System.out.println(f);//2.23 如果是正数,相当于BigDecimal.ROUND_UP BigDecimal g = new BigDecimal("-2.225667").setScale(2, BigDecimal.ROUND_CEILING);System.out.println(g);//-2.22 如果是负数,相当于BigDecimal.ROUND_DOWN

4. ROUND_FLOOR

地板(向下),正数舍位向下,负数进位向下

BigDecimal h = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_FLOOR);System.out.println(h);//2.22 如果是正数,相当于BigDecimal.ROUND_DOWN		BigDecimal i = new BigDecimal("-2.224667").setScale(2, BigDecimal.ROUND_FLOOR);System.out.println(i);//-2.23 如果是负数,相当于BigDecimal.ROUND_HALF_UP

5. ROUND_HALF_UP

BigDecimal d = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_UP);System.out.println("ROUND_HALF_UP"+d); //2.23  四舍五入(若舍弃部分>=.5,就进位)

6. ROUND_HALF_DOWN

BigDecimal e = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_DOWN);System.out.println("ROUND_HALF_DOWN"+e);//2.22  四舍五入(若舍弃部分>.5,就进位)

7. ROUND_HALF_EVEN

BigDecimal j = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(j);//2.22 如果舍弃部分左边的数字为偶数,则作   ROUND_HALF_DOWN 
		
BigDecimal k = new BigDecimal("2.215").setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(k);//2.22 如果舍弃部分左边的数字为奇数,则作   ROUND_HALF_UP
		
		
	System.out.println("************************************");
		
	System.out.println("4.05: "+new BigDecimal("4.05").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.05: 4.0  down
	System.out.println("4.15: "+new BigDecimal("4.15").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.15: 4.2  up
	System.out.println("4.25: "+new BigDecimal("4.25").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.25: 4.2  down
	System.out.println("4.35: "+new BigDecimal("4.35").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.35: 4.4  up
	System.out.println("4.45: "+new BigDecimal("4.45").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.45: 4.4  down
	System.out.println("4.55: "+new BigDecimal("4.55").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.55: 4.6  up
	System.out.println("4.65: "+new BigDecimal("4.65").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.65: 4.6  down
		
	System.out.println("3.05: "+new BigDecimal("3.05").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.05: 3.0  down
	System.out.println("3.15: "+new BigDecimal("3.15").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.15: 3.2  up
	System.out.println("3.25: "+new BigDecimal("3.25").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.25: 3.2  down
	System.out.println("3.35: "+new BigDecimal("3.35").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.35: 3.4  up
	System.out.println("3.45: "+new BigDecimal("3.45").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.45: 3.4  down
	System.out.println("3.55: "+new BigDecimal("3.55").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.55: 3.6  up
	System.out.println("3.65: "+new BigDecimal("3.65").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.65: 3.6  down



8.ROUND_UNNECESSARY

BigDecimal l = new BigDecimal("2.215").setScale(3, BigDecimal.ROUND_UNNECESSARY);
System.out.println(l);
//断言请求的操作具有精确的结果,因此不需要舍入。
//如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125268.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu 20.04 安装 Docker

    Ubuntu 20.04 安装 Docker检查Ubuntu内核docker需要ubuntu的内核高于3.10uname-rDocker安装#新增更新源sudoecho”debhttps://download.docker.com/linux/ubuntuzestyedge”>/etc/apt/sources.list#step1:安装必要的一些系统工具sudoapt-getupdatesudoapt-get-yinstallapt-transport-httpsca-certi

    2022年7月21日
    13
  • 生成initramfs_windows引导文件

    生成initramfs_windows引导文件在制作Initramfs文件系统之前,我先简单介绍下linux各文件系统。linux支持多种文件系统类型,包括ext2,ext3,vfat,jffs,ramfs,nfs等,为了对各类文件系统进行统一管理,linux引入了虚拟文件系统vfs(virtualfilesystem),为各类文件系统提供一个统一的应用编程接口。文件系统类型主要有如下:根据存储设备的硬件特性,…

    2022年8月11日
    3
  • 推荐算法之NMF算法

    推荐算法之NMF算法在例如Netflix或MovieLens这样的推荐系统中,有用户和电影两个集合。给出每个用户对部分电影的打分,希望预测该用户对其他没看过电影的打分值,这样可以根据打分值为其做出推荐。NMF(non-negativematrixfactorization)的基本思想可以简单描述为:对于任意给定的一个非负矩阵A,NMF算法能够寻找到一个非负矩阵U和一个非负矩阵V,将一个非负的矩阵分解为左右…

    2022年6月17日
    32
  • LaTeX 插入图片失败[通俗易懂]

    LaTeX 插入图片失败[通俗易懂]LaTeX插入图片失败(引擎pdflatex)\includegraphics使用figure环境本身可正常编译,只使用\centering时\caption可正常插入。增加\includegraphics[width=10cm]{..}插入png图片时,报错100行,第101行报“Toomanyerrors.TeXstopped.”(已\usepackage{graphicx},不是旧包graphics的问题)几种报错语句重复出现,可能是循环错。“Missinge

    2022年6月6日
    39
  • Idea激活码最新教程2020.3.4版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2020.3.4版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2020 3 4 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2020 3 4 成功激活

    2025年5月22日
    0
  • 怎样创建一个简单的mysql数据库文件_MySQL数据库

    怎样创建一个简单的mysql数据库文件_MySQL数据库学习java到数据库操作章节后发现没有数据库,折腾了1天总算弄好了学习所需要的数据库,感觉好开心。一.创建数据库注:已经安装好mysql。windows下运行cmd进入命令窗口,本人用的是win7系统,先输入F:进入F盘,然后输入“cdF:\mysql\mysql-5.7.18-winx64\bin”(注:不要引号,路径为自己解压mysql的路径)。输入nets

    2022年10月29日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号