精华内容
下载资源
问答
  • setscale函数
    千次阅读
    2020-12-03 09:08:21
    // 设置小数点后第三位数字一大一小观察效果
    BigDecimal num =  new BigDecimal("3.3235667");
    BigDecimal numOne =  new BigDecimal("3.3275667");

    1、ROUND_UP:进位制:不管保留数字后面是大是小(0除外)都会进1

    // ROUND_UP--进位制:不管保留数字后面是大是小(0除外)都会进1
    BigDecimal num1 = num.setScale(2,BigDecimal.ROUND_UP);
    System.out.println("SmallROUND_UP:"+num1);
    BigDecimal numTwo = numOne.setScale(2,BigDecimal.ROUND_UP);
    System.out.println("BigROUND_UP:"+numTwo);
    打印结果:SmallROUND_UP:3.33  
         BigROUND_UP:3.33

    2、ROUND_DOWN:保留设置数字,后面所有直接去除

     // ROUND_DOWN--保留设置数字,后面所有直接去除

    BigDecimal num2 = num.setScale(2,BigDecimal.ROUND_DOWN);
    System.out.println("SmallROUND_DOWN:"+num2);
    BigDecimal numThree = numOne.setScale(2,BigDecimal.ROUND_DOWN);
    System.out.println("BigROUND_DOWN:"+numThree);
    
    打印结果:SmallROUND_DOWN:3.32
          BigROUND_DOWN:3.32

    3、ROUND_HALF_UP:根据保留数字后一位>=5进行四舍五入

    // ROUND_HALF_UP--根据保留数字后一位>=5进行四舍五入
    BigDecimal num3 = num.setScale(2,BigDecimal.ROUND_HALF_UP);
    System.out.println("SmallROUND_HALF_UP:"+num3);
    BigDecimal numFour = numOne.setScale(2,BigDecimal.ROUND_HALF_UP);
    System.out.println("BigROUND_HALF_UP:"+numFour);
    打印结果:SmallROUND_HALF_UP:3.32
          BigROUND_HALF_UP:3.33

    4、ROUND_HALF_DOWN:根据保留数字后一位>5进行四舍五入

    BigDecimal num4 = num.setScale(2,BigDecimal.ROUND_HALF_DOWN);
    System.out.println("SmallROUND_HALF_DOWN:"+num4);
    BigDecimal numFive = numOne.setScale(2,BigDecimal.ROUND_HALF_DOWN);
    System.out.println("BigROUND_HALF_DOWN:"+numFive);
    打印结果:SmallROUND_HALF_DOWN:3.32
          BigROUND_HALF_DOWN:3.33
    更多相关内容
  • 1. setScale(int number)2.setScale(int number, int round)根据round的值的不同,会有不同的“四舍五入”的取舍规则。 round取值:(BigDecimal中的常量) - ROUND_UP=0 - ROUND_DOWN=1 - ROUND_CEILING=2 - ...

    1. setScale(int number)

    2.setScale(int number, int round)

    根据round的值的不同,会有不同的“四舍五入”的取舍规则。
    round取值:(BigDecimal中的常量)
    - ROUND_UP=0
    - ROUND_DOWN=1
    - ROUND_CEILING=2
    - ROUND_FLOOR=3
    - ROUND_HALF_UP=4
    - ROUND_HALF_DOWN=5
    - ROUND_HALF_EVEN=6
    - ROUND_UNNECESSARY=7

    • ROUND_UP:远离0的舍入模式
      始终对非零舍弃部位的前一位数字加1,如果舍弃位为0,不做操作(7.20–>7.2)。

    • ROUND_DOWN:接近0的舍入模式
      从不对舍弃部分前一位加1。相当于截取。

    • ROUND_CEILING:接近正无穷大的舍入模式
      正数无差别,负数:ROUND_CEILING靠近0舍入,ROUND_UP远离0舍入
      与ROUND_UP比较:up: -7.45 –> -7.5
      ceiling: -7.45 –> -7.4

    • ROUND_FLOOR:接近负无穷大的舍入模式
      与ROUND_DOWN对比:down:-7.45 –> -7.4
      flloor: -7.45 –> -7.5

    • ROUND_HALF_UP:平常所说的“四舍五入”
      如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。

    • ROUND_HALF_DOWN:“五舍六入”
      如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。

    • ROUND_HALF_EVEN:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
      如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;
      如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。
      注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。
      此舍入模式也称为“银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。
      如果前一位为奇数,则入位,否则舍去。

    • ROUND_UNNECESSARY:断言请求的操作具有精确的结果,因此不需要舍入。
      如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。

    这里写图片描述

    展开全文
  • 基于BigDecimal.setScale的用法小结,正数,负数,位数,除法,给大家基于BigDecimal.setScale的用法小结易采站长站,站长之家为您整理了基于BigDecimal.setScale的用法小结的相关内容。1. BigDecimal num1 = new ...

    基于BigDecimal.setScale的用法小结,正数,负数,位数,除法,给大家

    基于BigDecimal.setScale的用法小结

    易采站长站,站长之家为您整理了基于BigDecimal.setScale的用法小结的相关内容。

    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。

    补充知识:BigDecimal中divide方法注意问题

    BigDecimal中divide方法抛异常:

    Non-terminating decimal expansion; no exact representable decimal result

    在使用

    BigDecimal rate = new BigDecimal(1).divide(new BigDecimal(3));

    时抛异常:

    Non-terminating decimal expansion; no exact representable decimal result

    原来是在做除法的时候出现了无限不循环小数如:0.333333333333

    解决方案

    在做做除法的时候指定保留的小数的位数:

    BigDecimal rate = new BigDecimal(1).divide(new BigDecimal(3), 6, BigDecimal.ROUND_HALF_UP);

    以上这篇基于BigDecimal.setScale的用法小结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易采站长站。以上就是关于对基于BigDecimal.setScale的用法小结的详细介绍。欢迎大家对基于BigDecimal.setScale的用法小结内容提出宝贵意见

    展开全文
  • BigDecimal.setScale用法总结 1. BigDecimal num1 = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失 2. BigDecimal num2 = new BigDecimal(2);//这种写法是可以的 3. BigDecimal num = new ...

    BigDecimal.setScale用法总结

    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);
    //断言请求的操作具有精确的结果,因此不需要舍入。
    
    展开全文
  • 这里介绍使用setScale()函数时,以指定原点(基点)进行缩放,而不是默认的(0, 0)点。 示例 void MyGraphicsItem::zoomOut(const QPointF & point) { QPointF p1 = mapToScene(point); setScale(scale() * ...
  • BigDecimal.setScale()方法用于商业计算的精度设置问题详解  网上的说法繁杂,看起来诸多不便,并且有的说法也不太准确,在这里 做一下求证。用的较多的4个参数: BigDecimal.ROUND_UP 这个方法做直接进位...
  • 后面得知,原来这个方法已过时,现在采用 setScale(xx, RoundingMode.HALF_UP) 特此记录一下
  • void QGraphicsItem::setScale(qreal factor) 设置item的缩放因子, 默认比例系数为 1.0(即项目未缩放)。 0.0 的尺度因子会将item折叠到单个点。如果提供负比例系数,则item将被翻转和镜像(即旋转 180 度)。...
  • } 运行结果: 2、BigDecimal.setScale()方法用于格式化小数点 setScale(1)表示保留一位小数,默认用四舍五入方式 使用时 要保留的小数位必须大于等于BigDecimal的小数位,不然会报错Rounding necessary setScale(1,...
  • 说明 函数setScale()用于设置item缩放显示。缩放后通过鼠标事件函数如hoverMoveEvent()获得的鼠标当前坐标将会是浮点数,坐标的x,y轴最大值与真实item(指未缩放时)相同。 函数 void QGraphicsItem::setScale...
  • java里面的三角函数

    千次阅读 2019-05-14 14:40:37
    System.out.println("正弦值为0.5所对应的反正弦值(对应的弧度):"+new BigDecimal(Math.asin(0.5)).setScale(2, RoundingMode.HALF_UP)+"(保留2为小数,四舍五入)"); //余弦值为0.5对应的弧度是π/3≈1.047,...
  • 一、问题三角函数在Java中是怎么表示的?二、解答2.1、Math中的三角函数首先来看一下,Java中的Math怎么表示30°角的弧度制,这里Math中有一个常量PI,就是π;我们知道sin30°=0.5;Java中却是近似值: 2.2、保留...
  • [FineReport]自定义函数

    千次阅读 2016-12-26 16:36:40
    FineReport如同其他报表如CR一样,提供了许多函数方便用户使用,但是基于一些实际情况需要自定义函数,如何进行自定义函数呢? FineReport设计器–服务器–函数管理器 public Object run(Object[] args) { ...
  • 简述: 今天带来的是Kotlin浅...例如使用顶层函数和属性从此消除Java中的static、中缀表达式调用和解构声明等。 1、为什么要用顶层函数替代Java中的static函数 2、顶层函数和属性的基本使用 3、顶层函数实质原理 4...
  • package *;import java.math.BigDecimal;import java.math..../*** @program: simple_tools* @description: 数学-一次函数* @author: ChenWenLong* @create: 2019-10-24 10:48**/public class LinearFunction {/...
  • //四舍五入保留2位小数 sin=sin.setScale(2, BigDecimal.ROUND_HALF_UP); //a边长 BigDecimal a=c.multiply(sin); //余弦值 BigDecimal cos=BigDecimal.valueOf(Math.cos(radians)); //四舍五入保留2位小数 cos=cos...
  • 1. 函数介绍 最近有用到计算一些投资现金与未来收益的场景,产品经理使用了excel公式,我也只能找找解决方法。 参考: 微软 PV函数 微软 FV函数 微软 PMT函数 这三个函数的计算,其实都是从一个数据公式代换来的...
  •  db.setScale(scale, BigDecimal.ROUND_HALF_UP);  return db; } 以上方法返回的BigDecimal.scale()方法并不是我指定的值,于是修改成以下方法解决: public static BigDecimal double2BigDecimal(double ...
  • 各种函数是java的精髓,熟练使用函数能极大的提高对项目的编码能力,本篇文章我们就来看看其中的四舍五入函数是怎么实现的。java中我们可以使用java.math.BigDecimal来进行四舍五入,除此之外还能直接使用...
  • Row): Any = { val bd = new BigDecimal(buffer.getDouble(0)/buffer.getInt(1).toDouble) bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue//保留两位小数 } } 2、注册该类,并指定到一个自定义函数中,...
  • postgis函数

    千次阅读 2019-05-24 12:59:24
    st_dwitnin 比st_distance速度快,需要在geometry字段上创建gist索引 SELECT the_geom FROM geom_table WHERE ST_Distance(the_geom, ‘SRID=312;POINT(100000 200000)’) < 100 SELECT the_geom ...
  • 利用对数函数法确定指标权重
  • BigDecimal的初始化:BigDecimal num = ...函数: 1.加法函数: add() 2.减法函数:substract() 3.乘法函数:multiply() 4.除法函数:divide() 使用方法: //加法 BigDecimal result1 = num1.add(num2); ...
  • PHP BC Math 函数详解

    2021-04-08 12:32:13
    用 PHP 计算的时候,会遇到高精度数带来的问题。好在 PHP 提供了 BC 系统函数。下面把常用的 BC 函数封装下,做了个简单的示例。【推荐教程:php视频教程】代码实例:...
  • setScale(2)对于item坐标系中除了矩形区域外的其余部分没有影响。旋转之后,矩形在scene坐标系中的坐标发生了大幅度变化,因为scene坐标系并没有旋转。在scene坐标系中,矩形左上角坐标即为(50,50+20*sin45*2)=(50,...
  • https://blog.csdn.net/suyimin2010/article/details/89415287https://my.oschina.net/u/3847608/blog/1837612...例如使用顶层函数和属性从此消除Java中的static、中缀表达式调用和解构声明等。 1、为什么要用顶层.
  • java实现一元二次函数求解

    千次阅读 2019-11-05 20:10:23
    这个程序的核心思想是通过二元一次函数的求根公式,先求出Δ,然后判断是否为Δ是否为0,再将a,b,c带入求根公式当中进行计算,最后将大的数存入x1,小的数存入x2,得出最终结果。 具体代码如下: import java.math....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,056
精华内容 2,822
关键字:

setscale函数