BigDecimal的运算——加减乘除

1、初始化(尽量用字符串的形式初始化)

    BigDecimal num12 = new BigDecimal("0.005");
BigDecimal num22 = new BigDecimal("1000000");
BigDecimal num32 = new BigDecimal("-1000000");

2、加法 add()函数

    // 加法
BigDecimal result1 = num1.add(num2);
BigDecimal result12 = num12.add(num22);

3、减法subtract()函数

    // 减法
BigDecimal result2 = num1.subtract(num2);
BigDecimal result22 = num12.subtract(num22);

4、乘法multiply()函数

    // 乘法
BigDecimal result3 = num1.multiply(num2);
BigDecimal result32 = num12.multiply(num22);

5、除法divide()函数

// 除法
BigDecimal result5 = num2.divide(num1,20,BigDecimal.ROUND_HALF_UP);
BigDecimal result52 = num22.divide(num12,20,BigDecimal.ROUND_HALF_UP);

6、绝对值abs()函数

// 绝对值
BigDecimal result4 = num3.abs();
BigDecimal result42 = num32.abs();

7、八种舍入模式解释如下

7.1 ROUND_UP

  舍入远离零的舍入模式。
  在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。
  注意,此舍入模式始终不会减少计算值的大小。

7.2 ROUND_DOWN

  接近零的舍入模式。
  在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。
  注意,此舍入模式始终不会增加计算值的大小。

7.3 ROUND_CEILING

  接近正无穷大的舍入模式。
  如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;
  如果为负,则舍入行为与 ROUND_DOWN 相同。
  注意,此舍入模式始终不会减少计算值。

7.4 ROUND_FLOOR

  接近负无穷大的舍入模式。
  如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;
  如果为负,则舍入行为与 ROUND_UP 相同。
  注意,此舍入模式始终不会增加计算值。

7.5 ROUND_HALF_UP

  向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。
  如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。
  注意,这是我们大多数人在小学时就学过的舍入模式(四舍五入)。

7.6 ROUND_HALF_DOWN

  向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
  如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同(五舍六入)。

7.7 ROUND_HALF_EVEN

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

7.8 ROUND_UNNECESSARY

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

BigDecimal的运算——加减乘除的更多相关文章

  1. Java中的Bigdecimal类型运算

    Java中的Bigdecimal类型运算 双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更小的数进行运算和处理.Java在java.math包中提 供的API类BigD ...

  2. BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result的解决办法

    BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represent ...

  3. css3 calc():css简单的数学运算-加减乘除

    css3 calc():css简单的数学运算–加减乘除 多好的东西啊,不用js,一个css就解决了. .box{ border:1px solid #ddd; width:calc(100% - 10 ...

  4. python实现图片色素的数值运算(加减乘除)和逻辑运算(与或非异或)

    目录: (一)数值运算(加减乘除) (二)逻辑运算(与或非异或) 正文: (一)数值运算(加减乘除) opencv自带图片色素的处理函数------相加:add()   相减:subtract()  ...

  5. java BigDecimal实现精确加减乘除运算

    java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val)Translates a doubl ...

  6. Java BigDecimal类型的 加减乘除运算

    原文: https://blog.csdn.net/xuwei_net/article/details/81253471 加法:add 减法:subtract 乘法:multiply 除法:divid ...

  7. BigDecimal类的加减乘除

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算. 双精度浮点型变量double可以处理16位有效数,但是在实际应用中,需要对更大或者更小的 ...

  8. BigDecimal常用的加减乘除算法、比较大小、保存两位小数点

    项目中涉及到了BigDecimal的加.减.乘.比较大小.精确度的问题.所以在此总结一下,方便以后复习. //加法 BigDecimal coins = new BigDecimal("0& ...

  9. JAVA BigDecimal 高精度运算

    文章参考一位博友,由于时间太久忘了链接,见谅! public class BigDecimalUtils { private static final int DIV_SCALE = 10;// 除法 ...

随机推荐

  1. WebGPU 导入[2] - 核心概念与重要机制解读

    目录 1. 核心概念 ① 适配器和设备 ② 缓冲.纹理.采样器 ③ 绑定组 ④ 着色器与管线 ⑤ 编码器与队列 2. 重要机制 ① 缓冲映射机制 ② 时间线 1. 核心概念 这部分不会详细展开,以后写 ...

  2. PureRandom采样类定义和测试

    此是随机采样算法,效果感觉一般般. 类声明: #pragma once #ifndef __PURERANDOM_HEADER__ #define __PURERANDOM_HEADER__ #inc ...

  3. vue原理相关

    vue原理三大模块:响应式.vdom和diff.模板编译 vue原理要点: 1.组件化 组件化的历史:在vue之前已经有组件化的概念了,想asp.jsp.php等就有组件化的概念,nodejs也有组件 ...

  4. Git 06 分支

    参考源 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0 版本 本文章基于 Git 2.35.1.2 概述 分支用 ...

  5. [题解]Balance

    1.题目 POJ-1837 2.题目大意 一个天平上有一些钩子,现在有一些砝码.给出每个钩子到原点(姑且这么叫吧)的距离(-15 ~ 15,负数代表在左边,正数相反)以及砝码的重量(1 ~ 20),求 ...

  6. 我就获取个时间,机器就down了

    本文主要讲解linux 时间管理系统中的一个问题 背景:linux 时间管理,包含clocksource,clockevent,timer,tick,timekeeper等等概念 , 这些概念有机地组 ...

  7. linux 旁路掉协议栈的处理点

    对于协议栈的发展,目前有三种处理趋势,一种是类似于使用dpdk的方式,然后将协议栈放到用户态来做,做得比较好的一般都是以bsd的协议栈为底子,可以参考的是腾讯开源的的方案,另外一种是,继续放在内核,但 ...

  8. metasploit进行局域网远控

    用metasploit进行局域网远程控制 Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全 ...

  9. [SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

    目录 1.GNU Radio 是什么 2.我为什么要用 GNU Radio 3.数字信号处理 3.1 一点信号理论 3.2 将数字信号处理应用于无线电传输 4.基于流程图的模块化数字信号处理方法 本文 ...

  10. 【题解笔记】PTA基础6-10:阶乘计算升级版

    题目地址:https://pintia.cn/problem-sets/14/problems/742 前言 咱目前还只能说是个小白,写题解是为了后面自己能够回顾.如果有哪些写错的/能优化的地方,也请 ...