java学习总结(16.07.16)Random类和BigDecimal类

来源:互联网 发布:网络课程尔雅官网 编辑:程序博客网 时间:2024/06/06 12:26

Random类

Random类是java中用于产生随机数的类,它有两个构造器

Random()//无参数,使用默认的数种生成伪随机数

Random(long seed) //使用指定的数种生成伪随机数


使用Random类生成伪随机数:

使用方法nextXxx()可以生成指定类型的随机数

其中nextInt方法可以指定范围

nextBytes(Byte[] Bytes) 则是生成一系列随机的Byte类型整数并存放于Byte数组Bytes中

nextGaussian()//返回随机生成的伪高斯数列中的下一个double类型的浮点数


BigDecimal类

BigDecimal类是java提供的大数字处理类,这个类解决了浮点类型数据计算时精度丢失的问题,使用BigDecimal类可以精确地对高精度数据进行运算

下面是BigDecimal类的使用方法

BigDecimal类的构造器

BigDecimal类的构造器有三个:
public BigDecimal(double val)      //不推荐使用这个构造器,因为会出现精度丢失
public BigDecimal(String val)       //以字符串形式将浮点数传入构造器
public static BigDecimal valueOf(double val)   //这个构造器内部其实也是做了浮点数到字符串的转换
例:
package fgb;import java.math.BigDecimal;public class BigDecimalTest {public static void main(String[] args) {BigDecimal bd1=new BigDecimal(0.05);//bd1将会出现精度丢失BigDecimal bd2=new BigDecimal("0.05");BigDecimal bd3=BigDecimal.valueOf(0.05);System.out.println(bd1+"\n"+bd2+"\n"+bd3);}}
输出结果:0.050000000000000002775557561562891351059079170227050781250.050.05

BigDecimal的精度(小数点后的位数)

scale方法,返回当前BigDecimal实例的小数位数(精度)
setScale方法,设置精度(和小数保留方式)

BigDecimal类的四则运算

public BigDecimal add(BigDecimal augend)  //加法
public BigDecimal subtract(BigDecimal subtrahend)   //减法
public BigDecimal multiply(BigDecimal multiplicand)  //惩罚
public BigDecimal divide(BigDecimal divisor)  //除法,注:若所得结果的精度超出可表示范围,系统则会抛出错误 Non-terminating decimal expansion; no exact representable decimal result.
其他重载divide方法还可以指定结果的精度以及小数的保留方式,可以截去超长的小数,将结果按指定方式报流程指定精度的小数

BigDecimal类的roundingMode(运算中小数保留的方式)
roundingMode是指BigDecimal类运算时保留小数的方式,setScale方法和divide方法都可以指定roundingMode
roundingMode有如下几种:

BigDecimal.ROUND_DOWN直接删除多余的小数位,如2.35会变成2.3 
BigDecimal.ROUND_UP进位处理,2.35变成2.4 
BigDecimal.ROUND_HALF_UP四舍五入,2.35变成2.4
BigDecimal.ROUND_HALF_DOWN五舍六入,2.35变成2.3,如果是5则向下舍
注:这些roundingMode都是BigDecimal类定义的静态变量,且为final变量

0 0