BigDecimal类的加减乘除

BigDecimal类的加减乘除

转自:http://blog.sina.com.cn/s/blog_6a0cd5e501011soa.html

BigDecimal类型(+ - * /)所用的属性

11.10 BigDecimal类

对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。BigDecimal类的常用方法如表11-15所示。

表11-15 BigDecimal类的常用方法


序号


方    法


类型


描    述


1


public BigDecimal(double val)


构造


将double表示形式转换

为BigDecimal


2


public BigDecimal(int val)


构造


将int表示形式转换为

BigDecimal


3


public BigDecimal(String val)


构造


将字符串表示

形式转换为BigDecimal


4


public BigDecimal add(BigDecimal augend)


普通


加法


5


public BigDecimal subtract(BigDecimal
subtrahend)


普通


减法


6


public BigDecimal multiply(BigDecimal
multiplicand)


普通


乘法


7


public BigDecimal divide(BigDecimal
divisor)


普通


除法

范例:进行四舍五入的四则运算

  1. package
    org.lxh.demo11.numberdemo;
  2. import
    java.math.BigDecimal;
  3. class MyMath
    {
  4. public
    static
    double
    add(double d1,
    double d2)
    {        //
    进行加法运算
  5. BigDecimal b1 = new
    BigDecimal(d1);
  6. BigDecimal b2 = new
    BigDecimal(d2);
  7. return
    b1.add(b2).doubleValue();
  8. }
  9. public
    static
    double
    sub(double d1,
    double d2)
    {        //
    进行减法运算
  10. BigDecimal b1 = new
    BigDecimal(d1);
  11. BigDecimal b2 = new
    BigDecimal(d2);
  12. return
    b1.subtract(b2).doubleValue();
  13. }
  14. public
    static
    double
    mul(double d1,
    double d2)
    {        //
    进行乘法运算
  15. BigDecimal b1 = new
    BigDecimal(d1);
  16. BigDecimal b2 = new
    BigDecimal(d2);
  17. return
    b1.multiply(b2).doubleValue();
  18. }
  19. public
    static
    double
    div(double d1,
    double
    d2,int len)
    {// 进行除法运算
  20. BigDecimal b1 = new
    BigDecimal(d1);
  21. BigDecimal b2 = new
    BigDecimal(d2);
  22. return
    b1.divide(b2,len,BigDecimal.
    ROUND_HALF_UP).doubleValue();
  23. }
  24. public
    static
    double
    round(double d,
    int len)
    {     //
    进行四舍五入
  25. 操作
  26. BigDecimal b1 = new
    BigDecimal(d);
  27. BigDecimal b2 = new
    BigDecimal(1);
  28. //
    任何一个数字除以1都是原数字
  29. //
    ROUND_HALF_UP是BigDecimal的一个常量,
    表示进行四舍五入的操作
  30. return
    b1.divide(b2, len,BigDecimal.
    ROUND_HALF_UP).doubleValue();
  31. }
  32. }
  33. public
    class
    BigDecimalDemo01 {
  34. public
    static
    void main(String[]
    args) {
  35. System.out.println("加法运算:" +
    MyMath.round(MyMath.add(10.345,
  36. 3.333), 1));
  37. System.out.println("乘法运算:" +
    MyMath.round(MyMath.mul(10.345,
  38. 3.333), 3));
  39. System.out.println("除法运算:" +
    MyMath.div(10.345, 3.333, 3));
  40. System.out.println("减法运算:" +
    MyMath.round(MyMath.sub(10.345,
  41. 3.333), 3));
  42. }
  43. }
时间: 2024-08-26 07:35:13

BigDecimal类的加减乘除的相关文章

Java基础知识强化89:BigDecimal类之BigDecimal类引入和概述 以及 BigDecimal的使用(加减乘除)

1. BigDecimal类概述: 由于在运算的时候,float类型和double很容易丢失精度.所以为了能够精确的表达.计算浮点数,Java提供了BigDecimal. BigDecimal:不可变.任意精度的有符号十进制数. 2. BigDecimal构造方法 1 public BigDecimal(String val) 3. BigDecimal的使用(加减乘除) 1 public BigDecimal add(BigDecimal augend):加 2 public BigDecim

java.math.BigDecimal类的用法

在java中提供了大数字的操作类,即java.math.BinInteger类和java.math.BigDecimal类.这两个类用于高精度计 算,其中BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类.下边我们介绍BigDecimal类: BigDecimal的实现利用到了BigInteger,不同的是BigDecimal加入了小数的概念.一般的float型和Double型数据只可 以用来做科学计算或者是工程计算,由于在商业计算中,要求的数字精度比较高

BigDecimal类处理高精度计算

BigDecimal类处理高精度计算 ? Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理.一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度.所以开发中,如果我们需要精确计算的结果,则

Java BigDecimal类

1 package demo04; 2 3 import java.math.BigDecimal; 4 5 //double和float类型在运算中很容易丢失精度,造成数据的不准确性,BigDecimal类可以实现浮点数据的高精度运算 6 public class BigDecimalDemo { 7 public static void main(String[] args) { 8 BigDecimal b1 = new BigDecimal("0.09"); 9 BigDeci

java之BigDecimal类

1.BigDecimal类概述及其构造方法 由于在运算的时候,float类型和double类型很容易丢失进度,所以,为了能够精确的表示.计算浮点数,java提供了BigDecimal类 BigDecimal类是不可变得.任意精度的有符号是进制数 2.构造方法及成员方法 package com; import java.math.BigDecimal; /**  * BigDecimal类  * 由于在运算的时候,float类型和double类型很容易丢失精度.所以,为了能精确的表示.计算浮点数.

BigDecimal类

为了能精确表示,计算浮点数,java提供了BigDecimal类,该类提供了大量的构造器用于创建BigDecimal对象,包括 把所有的基本数值型变量转换成一个BigDecimal对象,也包括利用数字字符串,数字字符数组来创建BigDecimal对象 BigDecimal类提供了add()方法,subtract(),multiply(),divide(),pow()方法对精确浮点数进行常规算术运算 public class BigDecimalTest{ public static void m

用BigDecimal类实现Fibonacci算法

Fibonacci(N)=Fibonacii(N-1)+Fibonacci(N-2) 其中 Fibonacci(0)=0;Fibonacci(1)=1 用循环或则递归实现Fibonacci算法很简单,这里就不说了,如果要用公式实现的话,需要进行开根号和幂运算,普通的long型号只能精确到小数点之后的16位,这就意味着当N很大的时候由于小数位overflow无法进行精确运算,本人测试当N大于92时候因为数据溢出的原因就与实际结果不一样了,如果小数点后面不是精确16位,而是自己设定的话,那么运算结果

Java复习-Bigdecimal类

因为直接引用float和double类型的数据进行算数运算的时候总是会进行精度的丢失,因此Java采用了bigdecimal类进行精度方面的运算,但是采用精度进行运算的时候,一般传入的是字符串,如果硬要传入double类型的数据的话,采用bigdecimal类提供的方法 产生了精度的丢失, 如果使用了bigdecimal之后,采用的是新建对象,不是以字符串的方式传入的话就会出现误差,所以一定要以字符串的方式传入进去 采用了最后一种方式以后就不会出现进度的消失了

Java大数处理类:BigInteger类和BigDecimal类

当我们要处理非常大的数据时,平常用的数据类型已不足以表示,在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,这两个类在理论上只要计算机内存足够大就能够表示无线大的数.它们都在java.math.*包中,我们可以在API文档中进行查看: Java API 1.6 中文在线帮助文档 http://www.yq1012.com/api/ 实例: 1 import java.math.BigDecimal; 2 import java.math.BigInteg