首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

BigDecimal的舍入值

BigDecimal是Java中的一个类,用于进行高精度的数值计算。它可以处理任意长度的整数和小数,避免了浮点数计算中的精度丢失问题。在云计算领域中,BigDecimal常用于处理金融数据、科学计算等需要高精度计算的场景。

舍入值是指在进行数值计算时,将结果按照一定规则进行四舍五入的操作。BigDecimal提供了多种舍入模式,常用的有以下几种:

  1. ROUND_UP:向远离零的方向舍入,即向正无穷方向舍入。
  2. ROUND_DOWN:向接近零的方向舍入,即向负无穷方向舍入。
  3. ROUND_CEILING:向正无穷方向舍入,如果是正数则舍入,如果是负数则进一。
  4. ROUND_FLOOR:向负无穷方向舍入,如果是正数则进一,如果是负数则舍入。
  5. ROUND_HALF_UP:向最接近的整数舍入,如果舍弃部分大于等于0.5,则进一;否则舍弃。
  6. ROUND_HALF_DOWN:向最接近的整数舍入,如果舍弃部分大于0.5,则进一;否则舍弃。
  7. ROUND_HALF_EVEN:向最接近的整数舍入,如果舍弃部分大于0.5,则进一;如果舍弃部分等于0.5,则向最接近的偶数舍入。

在实际应用中,选择合适的舍入模式取决于具体的业务需求和数值计算的精度要求。

腾讯云提供了云计算相关的产品和服务,其中包括云服务器、云数据库、云存储等。具体关于BigDecimal的舍入值的使用,可以参考腾讯云的文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java BigDecimal 舍入模式(RoundingMode)详解

RoundingMode 是 Java 中用于定义舍入行为枚举类。它主要用于精确数字运算,尤其是涉及到小数点情况下。...以下是 RoundingMode 详细讲解及举例说明: RoundingMode 常见枚举 1、UP 向远离零方向舍入。 例如:1.1 会舍入为 2,-1.1 会舍入为 -2。...4、FLOOR 向负无穷方向舍入。 例如:1.9 会舍入为 1,-1.9 会舍入为 -2。 5、HALF_UP 向最接近数字舍入,如果距离相等,则向远离零方向舍入,即四舍五入。...例如:1.5 会舍入为 2,-1.5 会舍入为 -2。 6、HALF_DOWN 向最接近数字舍入,如果距离相等,则向接近零方向舍入。 例如:1.5 会舍入为 1,-1.5 会舍入为 -1。...使用示例 下面通过示例来演示如何在 BigDecimal 中使用不同 RoundingMode: import java.math.BigDecimal; import java.math.RoundingMode

9310

Java BigDecimal 舍入模式(RoundingMode)详解

BigDecimal.divide方法中必须设置roundingMode,不然会报错。...ROUND_UP:向正无穷方向对齐(转换为正无穷方向最接近所需数值) ROUND_DOWN:向负无穷方向对齐 ROUND_CEILING:向原点反方向对齐 ROUND_FLOOR:向原点方向对齐 ROUND_HALF_UP...:“四舍五入”,如果舍弃部分最高位大于等于 5,向正无穷方向对齐,否则向负无穷方向对齐 ROUND_HALF_DOWN:“五舍六入”,如果舍弃部分最高位大于 5,向正无穷方向对齐,否则向负无穷方向对齐...ROUND_HALF_EVEN:“四舍六入五成双”,如果舍弃部分最高位大于等于六,或等于五并且前一位是奇数,向正无穷方向对齐,否则向负无穷方向对齐 ROUND_UNNECESSARY:如果需要舍入

1.9K21
  • SAP 物料最小订购量、及舍入测试

    在物料主数据中,是设置于MRP1最小批量(Minimum Lot Size)舍入,信息记录中是在采购组织数据中最小数量(Minimum Qty).最小包装量(MPQ)在物料主数据舍入舍入参数文件...物料主数据中最小批量、舍入,在MRP运行时都会起作用。如果同时在物料主数据中设了最小批量和舍入,在MRP运行时,取其中 。...如果物料主数据中存在舍入(Rounding QTY),则建立PO时,系统首次会将你输入数量转为最小订购量(如果你输入数量低于舍入),更复杂情况下,是可以更改你输入采购单位。...如果舍入数量低于信息记录最小订购数量,系统会给出提示。 无论如何,目前没找到有效方法让MRP运算时生成PR参考信息记录中最小数量或是舍入,即便PR中已经分配到了相关供应商。...网上资料显示,除非将舍入信息放到框架合同中,MRP运算时方可参考与供应商特定舍入信息。

    1.6K20

    SAP 物料最小订购量、及舍入测试

    在物料主数据中,是设置于MRP1最小批量(Minimum Lot Size)舍入,信息记录中是在采购组织数据中最小数量(Minimum Qty).最小包装量(MPQ)在物料主数据舍入舍入参数文件...物料主数据中最小批量、舍入,在MRP运行时都会起作用。如果同时在物料主数据中设了最小批量和舍入,在MRP运行时,取其中 。...如果物料主数据中存在舍入(Rounding QTY),则建立PO时,系统首次会将你输入数量转为最小订购量(如果你输入数量低于舍入),更复杂情况下,是可以更改你输入采购单位。...如果舍入数量低于信息记录最小订购数量,系统会给出提示。 无论如何,目前没找到有效方法让MRP运算时生成PR参考信息记录中最小数量或是舍入,即便PR中已经分配到了相关供应商。...网上资料显示,除非将舍入信息放到框架合同中,MRP运算时方可参考与供应商特定舍入信息。

    2K11

    Double转BigDecimal并保留两位小数出现异常: java.lang.ArithmeticException: Rounding necessary

    永远不要在丢弃分数之前增加数字(即截断)。 请注意,此舍入模式永远不会增加计算大小 public final static int ROUND_CEILING:舍入模式向正无穷大舍入。...如果BigDecimal为正数,则表现为ROUND_UP ; 如果为负,则表现为ROUND_DOWN 。 请注意,此舍入模式永远不会减少计算。...请注意,此舍入模式不会增加计算 public final static int ROUND_HALF_DOWN:舍入模式向“最近邻居”舍入,除非两个邻居等距,在这种情况下向下舍入。...是常用四舍五入方式 public final static int ROUND_UNNECESSARY:舍入模式断言请求操作具有精确结果,因此不需要舍入。...请注意,此舍入模式永远不会降低计算大小。。

    78220

    BigDecimal加减乘除计算

    运算——加减乘除 首先是bigdecimal初始化 这里对比了两种形式,第一种直接value写数字,第二种用string来表示 BigDecimal num1 = new BigDecimal...因为不是所有的浮点数都能够被精确表示成一个double 类型,有些浮点数值不能够被精确表示成 double 类型,因此它会被表示成与它最接近 double 类型。...注意,此舍入模式始终不会减少计算大小。 2、ROUND_DOWN 接近零舍入模式。 在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。...注意,此舍入模式始终不会增加计算大小。 3、ROUND_CEILING 接近正无穷大舍入模式。...注意,此舍入模式始终不会增加计算。 5、ROUND_HALF_UP 向“最接近”数字舍入,如果与两个相邻数字距离相等,则为向上舍入舍入模式。

    1.6K20

    不掌握这些坑,你敢用BigDecimal吗?

    之所以会出现上述现象,是因为new BigDecimal时,传入0.1已经是浮点类型了,鉴于上面说这个只是近似,在使用new BigDecimal时就把这个近似值完整保留下来了。...注意,此舍入模式始终不会减少计算大小。 RoundingMode.DOWN:接近零舍入模式。在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。...注意,此舍入模式始终不会增加计算大小。 RoundingMode.CEILING:接近正无穷大舍入模式。...如果 BigDecimal 为正,则舍入行为与 ROUNDUP 相同;如果为负,则舍入行为与 ROUNDDOWN 相同。注意,此舍入模式始终不会减少计算。...注意,此舍入模式始终不会增加计算。 RoundingMode.HALF_UP:向“最接近”数字舍入,如果与两个相邻数字距离相等,则为向上舍入舍入模式。

    1.4K10

    BigDecimal

    我们建议尽可能使用字符串来初始化BigDecimal对象,以避免这种情况发生。 舍入模式 在高精度计算中,舍入可能是必要。...BigDecimal 提供了 RoundingMode 枚举,可以通过该枚举设置舍入模式。在使用BigDecimal进行除法或设置精度时,指定正确舍入模式非常重要。...- 向最接近数字舍入,如果与两个相邻数字距离相等,则向最近偶数舍入,类似于四舍五入 例如,当我们使用BigDecimal进行除法计算时,应指定一个舍入模式,例如: BigDecimal a =...divide() divide() 方法可以用于对两个BigDecimal进行除法运算,返回一个新BigDecimal,并可以设置精度和舍入模式。...setScale() setScale()方法可以设置BigDecimal标度(小数点后位数),并指定舍入模式,例如: BigDecimal a = new BigDecimal("10.1234

    33020

    基础类型BigDecimal简介

    (BigDecimal divisor) 返回 BigDecimal为向下舍入所得商 (this / divisor) 整数部分首选标度为 (this.scale() - divisor.scale...()) divideToIntegralValue(BigDecimal divisor, MathContext mc) 返回 BigDecimal为 (this / divisor) 整数部分准确商整数部分与舍入模式无关所以舍入模式不影响此方法返回首选标度是...-1996 中定义核心算法(根据上下文设置进行舍入) BigDecimal abs()求绝对其标度为 this.scale() BigDecimal abs(MathContext mc)求绝对根据上下文设置进行舍入...) BigDecimal(根据上下文设置进行舍入)。...BigDecimal ulp 是此与下一个具有相同位数较大 BigDecimal 之间正距离 零 ulp 在数值上等于1 和 this.scale()之间距离 所以可以说所有的数

    2.4K41

    Kotlin BigDecimal 精确计算

    注意,此舍入模式始终不会减少计算大小。 ROUND_DOWN 接近零舍入模式。 在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。...注意,此舍入模式始终不会增加计算大小。 ROUND_CEILING 接近正无穷大舍入模式。...如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同; 如果为负,则舍入行为与 ROUND_DOWN 相同。 注意,此舍入模式始终不会减少计算。...ROUND_FLOOR 接近负无穷大舍入模式。 如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同; 如果为负,则舍入行为与 ROUND_UP 相同。...注意,此舍入模式始终不会增加计算。 ROUND_HALF_UP 向“最接近”数字舍入,如果与两个相邻数字距离相等,则为向上舍入舍入模式。

    4.6K20

    BigDecimal

    如:2.4二进制表示并非就是精确2.4。反而最为接近二进制表示是 2.3999999999999999。浮点数实际上是由一个特定数学公式计算得到。...这是因为0.1无法准确地表示为 double(或者说对于该情况,不能表示为任何有限长度二进制小数)。这样,传入到构造方法不会正好等于 0.1(虽然表面上等于该)。...向零方向舍入 ROUND_FLOOR //向负无穷方向舍入 ROUND_HALF_DOWN //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为...ROUND_HALF_UP //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6 ROUND_UNNECESSARY //计算结果是精确...,不需要舍入模式 ROUND_UP //向远离0方向舍入 按照各自需要,可传入合适第三个参数。

    99010

    java 四舍五入运算_JAVA正确四舍五入方法「建议收藏」

    大家好,又见面了,我是你们朋友全栈君。 在JDK版本为1.8情况运行下面的代码,会发现很神奇情况(见运行结果)。...向绝对最大方向舍入,只要舍弃位非0即进位。 2、 ROUND_DOWN:趋向零方向舍入。向绝对最小方向输入,所有的位都要舍弃,不存在进位情况。...Math.round()方法就是使用此模式。 4、 ROUND_FLOOR:向负无穷方向舍入。向负无穷方向靠拢。...若是正数,舍入行为类似于ROUND_DOWN;若为负数,舍入行为类似于ROUND_UP。 5、 HALF_UP:最近数字舍入(5进)。这是我们最经典四舍五入。...6、 HALF_DOWN:最近数字舍入(5舍)。在这里5是要舍弃。 7、 HAIL_EVEN:银行家舍入法。

    1.5K30

    Java中BigDecimal详解

    ,NaN),不要把这些传给BigDecimal,否则会抛出异常。...这是因为0.1无法准确地表示为 double(或者说对于该情况,不能表示为任何有限长度二进制小数)。这样,传入到构造方法不会正好等于 0.1(虽然表面上等于该)。        ...所以,把double强制转化成int确实是扔掉小数部分,但是你写在代码中,并不一定是编译器生成真正double。...//向零方向舍入 ROUND_FLOOR    //向负无穷方向舍入 ROUND_HALF_DOWN    //向(距离)最近一边舍入,除非两边(距离)是相等,  如果是这样,向下舍入, 例如1.55...(3) BigDecimal都是不可变(immutable),在进行每一步运算时,都会产生一个新对象,所以在做加减乘除运算时千万要保存操作后

    57820
    领券