BigDecimal的加减乘除,比较,小数保留
关于BigDecimal的一些常用基本操作记录
1 BigDecimal b1 = new BigDecimal("1.124");
2 BigDecimal b2 = new BigDecimal("1.125");
3 BigDecimal b3 = new BigDecimal("1.126");
4 BigDecimal b4 = new BigDecimal("-1.126");
5 BigDecimal b5 = new BigDecimal("-1.123");
6 //加法
7 b1.add(b2);
8 //减法
9 b1.subtract(b2);
10 //乘法
11 b1.multiply(b2);
12 //除法(关于其小数保留下面统一解释)
13 b1.divide(b3, 2, BigDecimal.ROUND_UP);
14 //比较大小 (通过返回值区分 =0 相等, =1 前者大, =-1 后者大 )
15 b1.compareTo(b2);
16
17 //保留小数位与解释
18
19 /**
20 * 始终对非零舍弃部分前面的数字加1
21 *
22 * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
23 */
24 System.out.println(b1.setScale(2, BigDecimal.ROUND_UP)); //1.13
25 System.out.println(b2.setScale(2, BigDecimal.ROUND_UP)); //1.13
26 System.out.println(b3.setScale(2, BigDecimal.ROUND_UP)); //1.13
27 System.out.println(b4.setScale(2, BigDecimal.ROUND_UP)); //-1.13
28 System.out.println(b5.setScale(2, BigDecimal.ROUND_UP)); //-1.13
29 /**
30 * 从不对舍弃部分前面的数字加1
31 *
32 * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
33 */
34 System.out.println(b1.setScale(2, BigDecimal.ROUND_DOWN)); //1.12
35 System.out.println(b2.setScale(2, BigDecimal.ROUND_DOWN)); //1.12
36 System.out.println(b3.setScale(2, BigDecimal.ROUND_DOWN)); //1.12
37 System.out.println(b4.setScale(2, BigDecimal.ROUND_DOWN)); //-1.12
38 System.out.println(b5.setScale(2, BigDecimal.ROUND_DOWN)); //-1.12
39 /**
40 * 如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同
41 * 如果为负,则舍入行为与 ROUND_DOWN 相同
42 *
43 * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
44 */
45 System.out.println(b1.setScale(2, BigDecimal.ROUND_CEILING)); //1.13
46 System.out.println(b2.setScale(2, BigDecimal.ROUND_CEILING)); //1.13
47 System.out.println(b3.setScale(2, BigDecimal.ROUND_CEILING)); //1.13
48 System.out.println(b4.setScale(2, BigDecimal.ROUND_CEILING)); //-1.12
49 System.out.println(b5.setScale(2, BigDecimal.ROUND_CEILING)); //-1.12
50 /**
51 * 如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同
52 * 如果为负,则舍入行为与 ROUND_UP 相同
53 *
54 * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
55 */
56 System.out.println(b1.setScale(2, BigDecimal.ROUND_FLOOR)); //1.12
57 System.out.println(b2.setScale(2, BigDecimal.ROUND_FLOOR)); //1.12
58 System.out.println(b3.setScale(2, BigDecimal.ROUND_FLOOR)); //1.12
59 System.out.println(b4.setScale(2, BigDecimal.ROUND_FLOOR)); //-1.13
60 System.out.println(b5.setScale(2, BigDecimal.ROUND_FLOOR)); //-1.13
61 /**
62 * 如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同
63 *
64 * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
65 */
66 System.out.println(b1.setScale(2, BigDecimal.ROUND_HALF_UP)); //1.12
67 System.out.println(b2.setScale(2, BigDecimal.ROUND_HALF_UP)); //1.13
68 System.out.println(b3.setScale(2, BigDecimal.ROUND_HALF_UP)); //1.13
69 System.out.println(b4.setScale(2, BigDecimal.ROUND_HALF_UP)); //-1.13
70 System.out.println(b5.setScale(2, BigDecimal.ROUND_HALF_UP)); //-1.12
71 /**
72 * 如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同(五舍六入)。
73 *
74 * b1 1.124, b2 1.125, b3 1.126, b4 -1.126, b5 -1.123
75 */
76 System.out.println(b1.setScale(2, BigDecimal.ROUND_HALF_DOWN)); //1.12
77 System.out.println(b2.setScale(2, BigDecimal.ROUND_HALF_DOWN)); //1.12
78 System.out.println(b3.setScale(2, BigDecimal.ROUND_HALF_DOWN)); //1.13
79 System.out.println(b4.setScale(2, BigDecimal.ROUND_HALF_DOWN)); //-1.13
80 System.out.println(b5.setScale(2, BigDecimal.ROUND_HALF_DOWN)); //-1.12
BigDecimal的加减乘除,比较,小数保留的更多相关文章
- 价格BigDecimal的加减乘除、小数四舍五入、比较
num2必须改用传入String类型 //加法 BigDecimal result1 = num1.add(num2); //减法 BigDecimal result2 = num1.subtract ...
- BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)
转自:https://blog.csdn.net/ochangwen/article/details/51531866 一.简介 Java在java.math包中提供的API类BigDecimal,用 ...
- python之设置小数保留位数
python之设置小数保留位数 test.py: a = [3,4,4,4,6,4] average1 = float(sum(a)/len(a)) average2 =round(average1, ...
- input输入框只能输入正数和小数(保留小数点后两位)
1.限制只能输入正数和小数保留小数点后两位 1 <input type="number" id="txtNum" /> 2 3 <script ...
- 【Java】使用BigDecimal类进行精确小数计算
在商业计算中(尤其是计算价格)需要使用BigDecimal类来进行精确小数计算,因为用其他类型计算(如double)得到的结果不是精确的! 写个测试类. import org.junit.Test; ...
- BigDecimal处理加减乘除
public static void main(String[] args) { BigDecimal totalDoneAmt = new BigDecimal(2); Double d1 = ad ...
- Java中小数保留问题
方式一: 四舍五入 double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 ...
- java小数保留位数四舍五入
方法一:四舍五入 double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, Roundin ...
- BigDecimal进行加减乘除计算
以前大部分关于查询计算的逻辑是在sql语句中执行的,但是有时候会出现比较复杂的计算情况,需要我们在代码中进行计算,这个时候使用BigDecimal进行计算会很方便. BigDecimal num1 = ...
随机推荐
- [转]Win10下安装Linux子系统
工作以来一直DotNet系偏C/S, 接触Web开发的时间也不长, 现在主要偏向Web全栈方向, 一直对Linux系统心生向往, 夜深了娃睡了, 打开老旧的笔记本来折腾一下. 准备工作 控制面板 &g ...
- CodeForces 1204E"Natasha, Sasha and the Prefix Sums"(动态规划 or 组合数学--卡特兰数的应用)
传送门 •参考资料 [1]:CF1204E Natasha, Sasha and the Prefix Sums(动态规划+组合数) •题意 由 n 个 1 和 m 个 -1 组成的 $C_{n+m} ...
- 在HTML中的下拉框中怎样实现超连接?
给你个例子自己改吧: <SELECT name="select" onchange="window.open(this.options[this.selectedI ...
- java Class中得到构造方法Constructor、方法Method、字段Field
常用方法: Constructor类用于描述类中的构造方法: Constructor<T> getConstructor(Class<?>... parameterTypes) ...
- 【js】 vue 2.5.1 源码学习(六) initProxy initLifeCycle 渲染函数的作用域代理
大体思路 (五) 1. initProxy 渲染函数的作用域代理 ==> es6 如果支持proxy (hasProxy) 就用proxy 不支持就用 defineProperty() prox ...
- P1083 合并序列
题目描述 有N个单词和字符串T,按字典序输出以字符串T为前缀的所有单词. 输入格式 输入文件第一行包含一个正整数N: 接下来N行,每行一个单词,长度不超过100: 最后一行包含字符串T. 已知:1≤N ...
- 学习better-scroll与vue结合使用
better-scroll,移动端滚动场景需求的插件 例: 做一个上下滚动,左右两边关联(滑动右侧左侧对应的类别显示高亮,点击左侧的类别名称右侧滑动到对应的位置) 如图: 分析:滑动右侧的时候左侧对应 ...
- 51nod 1281山峰和旗子
1281 山峰和旗子 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 用一个长度为N的整数数组A,描述山峰和山谷的高度.山峰需要满足 ...
- jquery监听输入框只能输入数字
$('#mm').bind('input propertychange',function(){ var val= $(this).val(); if(val!=''&& isNaN( ...
- jQuery 工具类函数-检测对象是否为空
在jQuery中,可以调用名为$.isEmptyObject的工具函数,检测一个对象的内容是否为空,如果为空,则该函数返回true,否则,返回false值,调用格式如下: $.isEmptyObjec ...