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

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.05000000000000000277555756156289135105907917022705078125
0.05
0.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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值