在实际开开发过程中BigDecimal是一个经常用到的类:

  它可以进行大数值的精确却运算,下面介绍一下它的加-减-乘-除以及N次幂的操作操作

import java.math.BigDecimal;

public class Test02 {

    public static void main(String[] args) {
BigDecimal num1 = new BigDecimal(5000);
BigDecimal num2 = new BigDecimal(20);
BigDecimal num3 = new BigDecimal(0);
BigDecimal num4 = new BigDecimal(20);
//加法 add
System.out.println("**********加法运算 add ****************");
num3 = num1.add(num2);
System.out.println(num1+"+"+num2+"="+num3);
//减法 subtract
System.out.println("**********减法运算 subtract****************");
num3 = num1.subtract(num2);
System.out.println(num1+"-"+num2+"="+num3);
//除法 divide
System.out.println("**********除法运算 divide****************");
num3 = num1.divide(num2);
System.out.println(num1+"/"+num2+"="+num3);
//乘法
System.out.println("**********乘法运算 multiply ****************");
num3 = num1.multiply(num2);
System.out.println(num1+"*"+num2+"="+num3);
//N次幂
System.out.println("**********N次幂运算 pow****************");
num3 = num1.pow(2);
System.out.println(num1+"^"+2+"="+num3);
//比较 -1 小于 0 等于 1 大于
System.out.println("**********比较 -1 小于 0 等于 1 大于****************");
int i = num1.compareTo(num2);
int j = num4.compareTo(num2);
int k = num3.compareTo(num2);
System.out.println(num1+"大于"+num2+"====compareTo结果是"+i);
System.out.println(num4+"等于"+num2+"====compareTo结果是"+j);
System.out.println(num3+"小于"+num2+"====compareTo结果是"+k);
System.out.println(num1+"/"+33+num1.divide(new BigDecimal(33),2, BigDecimal.ROUND_HALF_EVEN)+"保留两位小数"); } }

运算结果:

在进行除法运算时很容易出现不整除的现象,不整除就会报出如下错误:

Exception in thread "main" java.lang.ArithmeticException: 

出现此错误时:使用BigDecimal.ROUND_HALF_EVEN 

 System.out.println(num1+"/"+33+num1.divide(new BigDecimal(33),2, BigDecimal.ROUND_HALF_EVEN)+"保留两位小数");
为不整除的书保留两位小数显示

BigDecimal数据的加 减 乘 除 N次幂运算 以及比较大小的更多相关文章

  1. freemarker 数据做加减计算

    controller的部分: @Controller@RequestMapping("/ContactsFrameIndex")public class ContactsFrame ...

  2. jQuery实现购物车物品数量的加减

    基于jquery的一款代码,实现购物车数据的加减,在淘宝网.京东商城购物时时经常见到的一个功能,点击文本框两侧的“+”与“-”,就可以增加或减少文本框内的数字值,每次步长为1,当然这个是可以自己设置的 ...

  3. SQLServer学习笔记<>日期和时间数据的处理(cast转化格式、日期截取、日期的加减)和 case表达式

    日期和时间数据的处理. (1)字符串日期 ‘20080301’,这一串为字符串日期,但必须保证为四位的年份,两位的月份,两位的日期.例如,查询订单表日期大于‘20080301’.可以这样写: 1 se ...

  4. mysql中使用日期加减时无法识别年-月格式数据的问题,%Y-%m"这种格式数据

    最新做报表统计的时候处理按月统计部分时发现,虽然使用 DATE_FORMAT( time, '%Y-%m' ) 函数可以将日期格式转成年-月,但是如果是参数是年-月格式,即"2018-10& ...

  5. BigDecimal数据加法返回值接收

    1.相加 两个BigDecimal变量a,b. 如果想进行相加,即a加b的话,返回值需要使用a进行接收,如下: a = a.add(b); BigDecimal为不可变类, 所以执行运算的结果需要再返 ...

  6. Java 中日期的几种常见操作 —— 取值、转换、加减、比较

    Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提 ...

  7. ORACLE日期加减【转】

    首先,感谢这个作者的辛勤汗水给我们带来的总结,因为日期函数操作对平时的使用真的是很常用,所以收藏一下以作后期使用. 原贴地址:http://www.cnblogs.com/xiao-yu/archiv ...

  8. Android 自定义控件 EditText输入框两边加减按钮Button

    自己封装的一个控件:EditText两边放加减按钮Button来控制输入框的数值 Demo 下载地址: 第一版:http://download.csdn.net/detail/zjjne/674086 ...

  9. 线性代数-矩阵-【3】矩阵加减 C和C++实现

    点击这里可以跳转至 [1]矩阵汇总:http://www.cnblogs.com/HongYi-Liang/p/7287369.html [2]矩阵生成:http://www.cnblogs.com/ ...

随机推荐

  1. jade-包含

    模板继承是子文件,父文件继承和代码复用的问题,那模版包含是文件与文件之间,文件与区块之间,这种区块内嵌的东西 继承的关键字是extends, 那模板包含使用的是include这个关键字 head.ja ...

  2. Wireless Network(并查集)

    POJ - 2236 #include<iostream> #include<algorithm> #include<cstring> #include<cm ...

  3. 大数据之路week05--day01(I/O流阶段一 之File)

    众所周知,我们电脑中有许许多多的文件夹和文件,文件的形式也有许多不同的格式,文件夹中也可以新建文件夹的存在,也就是多层的一步一步的嵌套. 我们想要实现I/O操作,就必须知道硬盘上文件的表现形式. 而J ...

  4. script标签中的async、defer属性

    Script标签是我们常用的引用js脚本的一种方式. 撸代码的时候,我们常常只写src属性,直接忽略其他属性. 最近发现了2个可以利用的属性:async.defer. 顾名思义async就是异步,在不 ...

  5. spring-JDBC配置,使用,一些报错,mybatis原理,优化

    一. 配置spring的jdbc的pom.xml遇到报错 missing artifactXXXXX. 修改dependency的版本如下 <dependency> <groupId ...

  6. idea java快速生成返回值

    ctrl+alt+V 或者

  7. 转 oracle数据库更新时间字段数据时的sql语句

    https://www.cnblogs.com/sun-rain/p/4921512.html ---Oracle数据库-时间函数 ---格式化时间插入update t_user u set u.mo ...

  8. SQL分表

    一.为什么要水平分表?简而言之,当单表数据量过大时,无法对其进行有效的维护,以及查询速度严重变慢时,我们就需要对其时行水平分表. 二.什么时候需要水平分表?在数据库结构的设计中,需要充分考虑后期数据的 ...

  9. 003_FREERTOS任务基础知识

    (一)任务状态 FreeRTOS 中的任务永远处于下面几个状态中的某一个: ● 运行态当一个任务正在运行时,那么就说这个任务处于运行态,处于运行态的任务就是当前正在使用处理器的任务.如果使用的是单核处 ...

  10. 016_编写脚本快速克隆 KVM 虚拟机

    #!/bin/bash#本脚本针对 RHEL7.2 或 Centos7.2#本脚本需要提前准备一个 qcow2 格式的虚拟机模板,名称为/var/lib/libvirt/images/.rh7_tem ...