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

Java BigDecimal 的舍入模式(RoundingMode)详解

RoundingMode 是 Java 中用于定义舍入行为的枚举类。它主要用于精确的数字运算,尤其是涉及到小数点的情况下。...2、DOWN 向接近零的方向舍入。 例如:1.9 会舍入为 1,-1.9 会舍入为 -1。 3、CEILING 向正无穷方向舍入。 例如:1.1 会舍入为 2,-1.1 会舍入为 -1。...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。...7、HALF_EVEN 向最接近的数字舍入,如果距离相等,则向偶数方向舍入(银行家舍入法)。 例如:1.5 会舍入为 2,2.5 会舍入为 2。

15610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ​AdaRound:训练后量化的自适应舍入

    贡献 建立了一个理论框架,以一种既考虑数据本身又考虑任务损失的特征的方式来分析舍入的影响。使用此框架,可以将舍入公式转化为二次无约束二进制优化(QUBO)问题。...提出了 AdaRound,这是一种新颖的方法,它可以通过连续松弛来为这种每层配置找到一个好的解决方案。...反过来,这意味着,假设一个块对角线 ,其中每个非零块仅对应一层。因此,最终简化为以下每层优化问题: 如之前的示例所示,我们需要二阶项来利用权重扰动之间的联合相互作用。...公式(4)是一个二值优化问题,因为 是二进制变量。对于收敛的预训练模型,可以安全地忽略梯度项对(4)中的优化的影响。进一步简化为: ?...然而,它仍然是一个 NP难 的离散优化问题。对于大量优化变量而言,找到具有合理计算复杂度的良好(次优)解决方案可能是一项挑战。

    2.2K11

    深入理解计算机系统(2.8)---浮点数的舍入,Java中的舍入例子以及浮点数运算(重要)

    为此LZ专门写了一个小程序,使用Java语言打印出了0.3的二进制表示,是这样的一个数字,0 01111101 00110011001100110011010。我们来简单算一下,这个数值大约是多少。...浮点数舍入    在我们平时日常使用的十进制当中,我们一般对一个无理数或者有位数限制的有理数进行舍入时,大部分时候会采取四舍五入的方式,这算是一种比较符合我们期望的舍入方式。    ...这里需要提一下的是,除了向偶数舍入以外,其它三种方式都会有明确的边界。这里的含义是指这三种方式舍入后的值x'与舍入之前的值x会有一个明确的大小关系,比如对于向上舍入来说,则一定有x 数字,假设要舍入到个位,那么它就是一个中间值,因为它处于1(二进制)和10(二进制)的中间,在这个时候将会采用向偶数舍入的方式。    ...在第一个输出语句中,计算1f+10000000000f时,会将1这个有效数值舍入掉,而导致最终结果为0.0。

    1.4K20

    【C#】Excel舍入函数Round、RoundUp、RoundDown的C#版

    本人在C#中进行小数舍入的时候常常会怀念Excel中的Round、RoundUp、RoundDown这几个函数,原因就是后者“接地气”,比较符合俺小老百姓的舍入要求,啥“银行家舍入法”就让银行家用去吧。...今儿有空,就把它实现了一下,先温习一下这几个Excel函数的功能: Round(value, digits) 将value按四舍五入法进行舍入,保留digits位小数;当digits为负时,在小数点左侧进行舍入...2) = 3.15;Round(-3.145, 2) = -3.15;Round(3145, -2) = 3100 RoundUp(value, digits) 按远离 0 的方向,将value向上舍入..., -2) = 3200 RoundDown(value, digits) 按靠近 0 的方向,将value向下舍入,保留digits位小数;当digits为负时,在小数点左侧进行舍入 举例:RoundDown...关于浮点运算的不可靠性,可参看:http://www.cnblogs.com/ethancai/articles/1237012.html - 四舍五入函数命名为RoundEx是因为decimal类已经存在一个叫

    1.8K20

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

    在物料主数据中,是设置于MRP1的最小批量(Minimum Lot Size)舍入值,信息记录中的是在采购组织数据中的最小数量(Minimum Qty).最小包装量(MPQ)在物料主数据的舍入值或舍入参数文件...物料主数据中的最小批量、舍入值,在MRP运行时都会起作用。如果同时在物料主数据中设了最小批量和舍入值,在MRP运行时,取其中的大值 。...如果物料主数据中存在舍入值(Rounding QTY),则建立PO时,系统首次会将你输入的数量转为最小订购量(如果你输入的数量低于舍入值),更复杂的情况下,是可以更改你输入的采购单位的。...如果在信息记录中存在最小数量和舍入参数文件(Rounding profile),则从PR转PO时(包括使用ME59自动转换时),会自动使用舍入参数文件中的舍入值替代原有的PR数量。...网上资料显示,除非将舍入值信息放到框架合同中,MRP运算时方可参考与供应商特定的舍入值信息。

    1.6K20

    IEEE754标准浮点数表示与舍入

    定点数 对于一个无符号二进制小数,例如101.111,如果我们要用2个字节即16位来存储它,我们可以约定用高8位存储小数点前的数字,用低8位存储小数点后的数字,这样的话它在存储空间中就是这样的:00000101.11100000...00001100110011001100110(这里是23)01100110011001100110011001100110011...这一长串23位之后的数字怎么办?...2 -1 向下舍入 1 1 1 2 -2 向上舍入 2 2 2 2 -1 向偶数舍入这个方式乍看可能没看懂,它其实是使舍入后的值的最低有效数字是偶数。...二进制舍入的与规则总结 好多中文资料一般到这里就戛然而止了,CSAPP书中讲到这也没有给到一个二进制的例子,相信大部分读者看完了上面也不知道二进制里是怎么处理的,所以下面给个二进制舍入的例子。...| = 0.000 100,两种选择的差值是相同的,这时使用向偶数舍入的方式,1.010是偶数(0偶1奇),所以舍入到1.010 根据上面的例子我们总结出以下规律: 我们用RR…RDD…D来表示一个二进制小数

    42310

    【蓝桥杯Java_C组·从零开始卷】第五节(二)、BigDecimal的使用

    throw new IllegalArgumentException("argument out of range"); } } } RoundingMode是一个枚举类...图示: 示例: 输入数字 使用 DOWN 舍入模式将输入数字舍入为一位数 5.5 5 2.5 2 1.6 1 1.1 1 1.0 1 -1.0 -1 -1.1 -1 -1.6 -1 -2.5 -2 -...,如果与两个相邻数字的距离相等,则向上舍入。...0.618只是它的近似值,其真值可以通过对5开方减去1再除以2来获得, 我们取它的一个较精确的近似值:0.618034 有趣的是,一些简单的数列中也会包含这个无理数,这很令数学家震惊!...它后面的每一个项都是前边两项的和。 如果观察前后两项的比值,即:1/3,3/4,4/7,7/11,11/18 ... 会发现它越来越接近于黄金分割数!

    1.2K20

    java.math包简介,RoundingMode与MathContext

    '可以看得到,主要包括三个类一个枚举 BigDecimal和BigInteger接下来会详细介绍 先说下另外两个 RoundingMode 舍入行为/ 近似模式 ?...RoundingMode 就是这么一个存在 如同它的名字一样,近似模式 为可能丢弃精度的数值操作指定一种舍入行为 舍入模式 UP 远离零方向舍入 DOWN 向零方向舍入 ?...HALF_UP 向最接近数字方向舍入如果与两个相邻数字的距离相等,则向上舍入 HALF_DOWN 向最接近数字方向舍入如果与两个相邻数字的距离相等,则向下舍入 HALF_EVEN 向最接近数字方向舍入...如果与两个相邻数字的距离相等,则向相邻的偶数舍入 HALF_UP/ HALF_DOWN /  HALF_DOWN  都是最接近数字舍入 不过如果两个相邻的数字距离相等,将会采取不同的模式...:一个 RoundingMode 对象,该对象指定舍入使用的算法 ?

    2.2K20

    SQL函数 ROUND

    SQL函数 ROUND以指定位数舍入或截断数字的数值函数。...一个数值表达式。 scale - 计算结果为整数的表达式,该整数指定要舍入到的位数,从小数点开始计数。可以是零、正整数或负整数。如果 scale 是小数, 会将其四舍五入为最接近的整数。...flag - 可选 — 一个布尔标志,指定是舍入还是截断 numeric-expr:0=round, 1=truncate。默认值为 0。ROUND 返回与 numeric-expr 相同的数据类型。...描述此函数可用于将数字舍入或截断为指定的小数位数。ROUND 将 numeric-expr 舍入或截断以缩放位置,从小数点开始计数。舍入时,数字 5 始终向上舍入。...在下面的示例中,每个 ROUND 都指定一个与要舍入的数字一样大或更大的负比例:SELECT {fn ROUND(987,-3)} AS Round1, {fn ROUND(487,-3)}

    5.5K31

    【java基础】BigDecimal 精度控制

    BigDecimal提供了精确的数值计算,其中8种舍入方式值得掌握。 1、ROUND_UP 舍入远离零的舍入模式。 在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。...注意,此舍入模式始终不会减少计算值的大小。 2、ROUND_DOWN 接近零的舍入模式。 在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。...注意,此舍入模式始终不会增加计算值。 5、ROUND_HALF_UP 向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。...6、ROUND_HALF_DOWN 向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。...7、ROUND_HALF_EVEN 银行家舍入法 向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。

    69910
    领券