史上最全BigDecimal的5种进位方式:ROUND_UP,ROUND_DOWN,ROUND_CEILING,ROUND_FLOOR,ROUND_HALF_UP,ROUND_HALF_DOWN的比较

2024-09-03 04:58

本文主要是介绍史上最全BigDecimal的5种进位方式:ROUND_UP,ROUND_DOWN,ROUND_CEILING,ROUND_FLOOR,ROUND_HALF_UP,ROUND_HALF_DOWN的比较,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先上JAVA官方文档

    /*** Rounding mode to round away from zero.  Always increments the* digit prior to a nonzero discarded fraction.  Note that this rounding* mode never decreases the magnitude of the calculated value.*/public final static int ROUND_UP =           0;/*** Rounding mode to round towards zero.  Never increments the digit* prior to a discarded fraction (i.e., truncates).  Note that this* rounding mode never increases the magnitude of the calculated value.*/public final static int ROUND_DOWN =         1;/*** Rounding mode to round towards positive infinity.  If the* {@code BigDecimal} is positive, behaves as for* {@code ROUND_UP}; if negative, behaves as for* {@code ROUND_DOWN}.  Note that this rounding mode never* decreases the calculated value.*/public final static int ROUND_CEILING =      2;/*** Rounding mode to round towards negative infinity.  If the* {@code BigDecimal} is positive, behave as for* {@code ROUND_DOWN}; if negative, behave as for* {@code ROUND_UP}.  Note that this rounding mode never* increases the calculated value.*/public final static int ROUND_FLOOR =        3;/*** Rounding mode to round towards {@literal "nearest neighbor"}* unless both neighbors are equidistant, in which case round up.* Behaves as for {@code ROUND_UP} if the discarded fraction is* ≥ 0.5; otherwise, behaves as for {@code ROUND_DOWN}.  Note* that this is the rounding mode that most of us were taught in* grade school.*/public final static int ROUND_HALF_UP =      4;/*** Rounding mode to round towards {@literal "nearest neighbor"}* unless both neighbors are equidistant, in which case round* down.  Behaves as for {@code ROUND_UP} if the discarded* fraction is {@literal >} 0.5; otherwise, behaves as for* {@code ROUND_DOWN}.*/public final static int ROUND_HALF_DOWN =    5;

看不懂别急,看翻译版本

/***舍入模式,从零开始舍入。总是增加*非零舍弃分数之前的数字。请注意,此舍入*模式从不降低计算值的大小。*/public final static int ROUND_UP =           0;/***舍入模式,向零舍入。从不递增数字*在丢弃的分数之前(即截断)。请注意*舍入模式从不增加计算值的大小。*/public final static int ROUND_DOWN =         1;/***舍入模式,向正无穷大舍入。如果*{@code BigDecimal}为正,行为与*{@code ROUND\u};如果为负,则行为与*{@code ROUND\u DOWN}。请注意,此舍入模式从不*减小计算值。*/public final static int ROUND_CEILING =      2;/***舍入模式,向负无穷大方向舍入。如果*{@code BigDecimal}为正,行为与*{@code ROUND\u DOWN};如果为负,则按*{@code ROUND\u}。请注意,此舍入模式从不*增加计算值。*/public final static int ROUND_FLOOR =        3;/***舍入模式向{@literal“nearest neighbor”舍入*除非两个邻居都是等距的,在这种情况下,就把他们围起来。*如果丢弃的分数是*≥0.5;否则,行为与{@code ROUND\u DOWN}相同。注意*这就是我们大多数人所学的四舍五入模式*小学。*/public final static int ROUND_HALF_UP =      4;/***舍入模式向{@literal“nearest neighbor”舍入*除非两个邻居是等距的,在这种情况下是圆的*趴下。如果丢弃*分数为{@literal>}0.5;否则,其行为与*{@code ROUND\u DOWN}。*/public final static int ROUND_HALF_DOWN =    5;

看到这里,除了最后两个翻译的,不懂之外,其他的,应该都清楚了,

这里解释一下最后两个的差别:

ROUND_HALF_UP: 遇到.5的情况时往上近似,例: 1.5 ->;2
ROUND_HALF_DOWN : 遇到.5的情况时往下近似,例: 1.5 ->;1

仅此而已

 

收工

 

 

这篇关于史上最全BigDecimal的5种进位方式:ROUND_UP,ROUND_DOWN,ROUND_CEILING,ROUND_FLOOR,ROUND_HALF_UP,ROUND_HALF_DOWN的比较的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132092

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

Codeforces Round #240 (Div. 2) E分治算法探究1

Codeforces Round #240 (Div. 2) E  http://codeforces.com/contest/415/problem/E 2^n个数,每次操作将其分成2^q份,对于每一份内部的数进行翻转(逆序),每次操作完后输出操作后新序列的逆序对数。 图一:  划分子问题。 图二: 分而治之,=>  合并 。 图三: 回溯:

Codeforces Round #261 (Div. 2)小记

A  XX注意最后输出满足条件,我也不知道为什么写的这么长。 #define X first#define Y secondvector<pair<int , int> > a ;int can(pair<int , int> c){return -1000 <= c.X && c.X <= 1000&& -1000 <= c.Y && c.Y <= 1000 ;}int m

Codeforces Beta Round #47 C凸包 (最终写法)

题意慢慢看。 typedef long long LL ;int cmp(double x){if(fabs(x) < 1e-8) return 0 ;return x > 0 ? 1 : -1 ;}struct point{double x , y ;point(){}point(double _x , double _y):x(_x) , y(_y){}point op

Codeforces Round #113 (Div. 2) B 判断多边形是否在凸包内

题目点击打开链接 凸多边形A, 多边形B, 判断B是否严格在A内。  注意AB有重点 。  将A,B上的点合在一起求凸包,如果凸包上的点是B的某个点,则B肯定不在A内。 或者说B上的某点在凸包的边上则也说明B不严格在A里面。 这个处理有个巧妙的方法,只需在求凸包的时候, <=  改成< 也就是说凸包一条边上的所有点都重复点都记录在凸包里面了。 另外不能去重点。 int

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要设置昵称 发送消息与消息展示 提示用户不能发送空消息 后端接口 发送消息 DB = []@ro

计蒜客 Half-consecutive Numbers 暴力打表找规律

The numbers 11, 33, 66, 1010, 1515, 2121, 2828, 3636, 4545 and t_i=\frac{1}{2}i(i+1)t​i​​=​2​​1​​i(i+1), are called half-consecutive. For given NN, find the smallest rr which is no smaller than NN