BigDecimal数据的加 减 乘 除 N次幂运算 以及比较大小

在实际开开发过程中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)+"保留两位小数");为不整除的书保留两位小数显示
时间: 2024-10-13 12:05:17

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

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

基于jquery的一款代码,实现购物车数据的加减,在淘宝网.京东商城购物时时经常见到的一个功能,点击文本框两侧的“+”与“-”,就可以增加或减少文本框内的数字值,每次步长为1,当然这个是可以自己设置的.本款效果除了加减功能外,还可以自动计算价格. 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transiti

SQLServer学习笔记&lt;&gt;日期和时间数据的处理(cast转化格式、日期截取、日期的加减)和 case表达式

日期和时间数据的处理. (1)字符串日期 ‘20080301’,这一串为字符串日期,但必须保证为四位的年份,两位的月份,两位的日期.例如,查询订单表日期大于‘20080301’.可以这样写: 1 select * from sales.orders 2 where orderdate>'20080301' 结果如图所示: (2)cast进行转化.例如,可以讲‘20080301’转化为时间类型.其结果跟上图一样. 1 select * from sales.orders 2 where order

POJ 2756 Autumn is a Genius 使用string的大数加减

本题就是说一个小神童,能计算加减法. 不过题目知识说这个小神童,到底有多神,要我们自己发现. 因为最后给出的数据非常非常巨大,听说接近50k就是超过50000个数位相加,可想而知他多神. 看来题目也是考IQ啊! 如果以为是超级水题,按照一般加减法做,肯定是WA了. 这里给出使用string的加减法运算,因为string是长度可增可减的,所以不管是多少位,只要内存支持,那么本算法都可以支持了.也可以使用vector这些容器.不过string应该更加省点内存. 注意: POJ比较讨厌的就是不支持C+

加加减减

加加减减(pands.pas/c/cpp) [题目背景]话说zyk又双叒叕在A图论的题目了!!![问题描述]zyk手里有若干幅有向图,每条边有个权值.你可以在这幅图上操作若干次(也是醉了),每次可以选择一个节点u和一个整数d,把以u为起点的边的权值增加d,把以u为终点的边的权值减小d(难怪叫加加减减).然而,zyk却想让所有边权的最小值为正且尽量大.[输入文件]输入包含若干组数据.每组数据第一行为两个整数n和m(n≤500,m≤700),即点和边的个数.以下m行每行三个整数u,v,w,即一条起点

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

Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提供了可行的解决方案,并不保证是最佳实践,欢迎讨论. 1. 日期取值 在旧版本 JDK 的时代,有不少代码中日期取值利用了 java.util.Date 类,但是由于 Date 类不便于实现国际化,其实从 JDK1.1 开始,就更推荐使用 java.util.Calendar 类进行时间和日期方面的处

表达式求值:从“加减”到“带括号的加减乘除”的实践过程

本文乃Siliphen原创,转载请注明出处:http://blog.csdn.net/stevenkylelee ● 为什么想做一个表达式求值的程序 最近有一个需求,策划想设置游戏关卡的某些数值,这个数值不是一个常量,而是根据关卡的某些环境数据套上一个计算表达式算出来的.这个需求无法用excel拖表预计算出,因为关卡的环境数据只有在游戏中才能产生,在excel制表时,这些都是未知的.作为程序员,我可以把计算表达式硬编码在代码中,但这个做法有缺陷,如果策划要修改计算表达式的话,只能通过我修改程序并

python处理时间加减

用python做数据统计分析时,原始日志文件中用户访问的时间不对, 需要往后延8小时,记录一下: >>> import datetime >>> pageTime = '2014-05-11 16:44:12' >>> pageTime '2014-05-11 16:44:12' 1.把pageTime字符串类型转换成datetime时间类型: >>> dt = datetime.datetime.strptime(pageTime,

自己实现的原码、反码、补码、移码的表示与加减运算软件

项目背景:这是我在大二上计算机组成原理这门课时,老师布置了一个课外作业(可以加分),她的要求是做一个能实现原码.反码.补码.移码的表示以及模仿计算机补码做加减运算功能的网络版软件.为了加平时分,于是我用一周的时间粗略地自学下JavaScript,然后将上述功能实现了,虽然只是一个微乎其微的小项目,但对热爱编程的我来说,还是有很大的成就感,故写下此文章已作留念~~~ 下面是实现的页面效果: 下面是实现的JavaScript源码: <!--wenjan.htm--> <html> &l

php日期加减

对于每天的统计数据,我们日期 date("Ymd") 转换成整型来作为数据库的主键,所以在寻找一段时间统计数据的时候需要用到时间的加减: 例如,30天内的数据 function getData($writetime , $limit){ $start_unix = strtotime($start); for ($i = 0; $i < $limit; $i++) { $writetime = date("Ymd", $start_unix); _stdout