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。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 网关,路由器,局域网,广域网络_局域网和广域网是什么意思

    网关,路由器,局域网,广域网络_局域网和广域网是什么意思网关、路由器、局域网、广域网网关:连接一个网络到另一个网络的关口,不同的网络有不同的网络地址,以及不同的网络中的主机分配有不同的段的ip地址。网关可以实现广域网的互连,也可以实现局域网的互连现在通常说的网关就是路由器的IP只要两台电脑能够相互ping的通,就说明两台电脑属于在同一个局域网中。路由器局域网就是内网,而内网就是局域网,一个学校,一个单位就是一个局域网,在同一个局域网中,所有的ip都是不一样的,但是在两个不同的局域网中,ip地址可以一样,使用ipconfig

  • ResponseBody浅析[通俗易懂]

    ResponseBody浅析[通俗易懂]@[TOC]ResponseBody浅析欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:…

  • 深入浅出ES6(四):模板字符串

    在上一篇文章中,我说过要写一篇风格迥异的新文章,在了解了迭代器和生成器后,是时候来品味一些不烧脑的简单知识,如果你们觉得太难了,还不快去啃犀牛书!现在,就让我们从最简单的知识学起吧!反撇号(`)基础知识ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(templatestrings)。除了使用反撇号字符`代替普通字符串的引号’或”外,它们看起来与普通

  • 初学者:html中的表单详解(下面附有代码)

    初学者:html中的表单详解(下面附有代码)表单的理解与解释表单:采集不同类型的用户输入数据,发送给服务器,实现用户和服务器之间的数据交互。表单标签form声明数据采集的范围,只要是在form中的,都是要采集的数据。一个页面中可以有多个form标签,只能是并列关系,不能嵌套。只能是兄弟关系,,不能是父子关系。用户向服务器端发送数据时,一次只能提交一个表单中的数据。如果要提交多个表单就需要用js中的异步交互。表单元素method属性:提交表单时所用的http方法,默认为get方法。get方式:将数据作为url地址的一部分发送给服务器

  • busybox配置telnetd

    busybox配置telnetd

    2021年11月15日
  • ZXV10 H608B V1.1.04T02_JS激活成功教程

    ZXV10 H608B V1.1.04T02_JS激活成功教程综合了网上各种说法,得出如下方案:一、如果你的路由器还能够用用户名telecomadmin密码nE7jA%5m登陆,那就拔掉电话线直接跳到步骤八二、拔掉路由器的电话线,下载提供的包并解压。三、打开包中

发表回复

您的电子邮箱地址不会被公开。

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