JAVA中 Math 类和BigDecimal 类型

Math 类

  • Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
  • 默认情况下,很多 Math 方法仅调用 StrictMath中的等价方法来完成它们的实现。建议代码生成器使用特定于平台的本机库或者微处理器指令(可用时)来提供 Math 方法更高性能的实现。这种更高性能的实现仍然必须遵守 Math 的规范。

java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。 abs 绝对值
acos,asin,atan,cos,sin,tan 三角函数 sqrt 平方根 pow(double a,doble b)
a的b次幂 log 自然对数 exp e为底指数 max(double a,double b) min(double
a,double b) random() 返回0.0到1.0的随机数 long round(double a)
double型数据a转换为long型(四舍五入) toDegrees(double angrad) 弧度—>角度
toRadians(double angdeg) 角度—>弧度



BigDecimal 类型

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

BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。toString() 方法提供 BigDecimal 的规范表示形式。

Integer类作为int的包装类,能存储的最大整型值为2^31-1,BigInteger类的数字范围较Integer类的数字范围要大得多,可以支持任意精度的整数。

构造器
           BigInteger(String val)
常用方法
public BigInteger abs()
public BigInteger add(BigInteger val)
public BigInteger  subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger remainder(BigInteger val)
public BigInteger pow(int exponent)
public BigInteger[] divideAndRemainder(BigInteger val)

一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类。
BigDecimal类支持任何精度的定点数。

构造器
              public BigDecimal(double val)
              public BigDecimal(String val)
常用方法
               public BigDecimal add(BigDecimal augend)
               public BigDecimal subtract(BigDecimal subtrahend)
               public BigDecimal multiply(BigDecimal multiplicand)
               public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
              public BigDecimal setScale(int newScale, RoundingMode roundingMode)
public void testBigInteger(){  
      BigInteger bi = new BigInteger("12433241123");  
      BigDecimal bd = new BigDecimal("12435.351");  
      BigDecimal bd2 = new BigDecimal("11");  
      System.out.println(bi);  
     //System.out.println(bd.divide(bd2));//不指定精度,报错  
      System.out.println(bd.divide(bd2,BigDecimal.ROUND_HALF_UP));  
      System.out.println(bd.divide(bd2,15,BigDecimal.ROUND_HALF_UP));  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值