Math 类和BigDecimal 类

来源:互联网 发布:网络应急演练方案 编辑:程序博客网 时间:2024/04/28 00:19

Math类

  • JDK文档(中文)中的解释如下:

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

  • 静态变量
public static final double PI     比任何其他值都更接近 e(即自然对数的底数)的 double 值。public static final double E      比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。
  • 常用方法
public static double floor(double a) :返回不大于它的最大整数 如, Math.(1.4) = 1 , Math.(-1.4) = -2public static double ceil(double a) : 返回不小于它的最小整数 如,Math.ceil(1.4) =2 , Math.(-1.4) = -1public static int min(int a,int b) :  返回最小值 如,Math.min(1, 2) = 1public static int max(int a,int b) :  返回最大值 如,Math.max(1, 2) = 2public static int abs(int a) :        返回绝对值 如,Math.abs(-5) = 5public static int round(float a) :    表示“四舍五入”,计算方法是 Math.floor(x+0.5), 即将原来的数字加上0.5后再向下取整,如, Math.round(11.4) = 11, Math.round(-11.6) = -12

BigDecimal类

  • JDK文档(中文)中的解释如下:

不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。

  • 为什么要使用BigDecimal类

由于浮点数采用二进制系统表示,而二进制无法精确的表示1/10,好比十进制无法精确表示1/3一样。因此,对于很多值浮点数都是采用其能够表示的离目标值近的数来表示,这有可能会在计算中带来不易察觉的误差。为了解决基本数据类型浮点数不能进行精确计算的问题,Java中专门提供了java.math.BigDecimal类,其提供浮点数的精确计算功能

  • 构造器描述
BigDecimal(int val)       创建一个具有参数所指定整数值的对象。 BigDecimal(double val)    创建一个具有参数所指定双精度值的对象。 BigDecimal(long val)      创建一个具有参数所指定长整数值的对象。 BigDecimal(String val)    创建一个具有参数所指定以字符串表示的数值的对象。
  • 常用方法
public BigDecimal add(BigDecimal augend)     BigDecimal对象中的值相加,然后返回这个对象。 public BigDecimal subtract(BigDecimal)       BigDecimal对象中的值相减,然后返回这个对象。 public BigDecimal multiply(BigDecimal)       BigDecimal对象中的值相乘,然后返回这个对象。 public BigDecimal divide(BigDecimal)         BigDecimal对象中的值相除,然后返回这个对象。 public string toString()                     将BigDecimal对象的数值转换成字符串。 public double doubleValue()                  将BigDecimal对象中的值以双精度数返回。 public float floatValue()                    将BigDecimal对象中的值以单精度数返回。 public long longValue()                      将BigDecimal对象中的值以长整数返回。 public int intValue()                        将BigDecimal对象中的值以整数返回。