第九章-数字处理类

目录

9.1数字格式化

9.2数字运算

9.2.1Math类 

9.2.2常用数学运算方法

9.3随机数

9.3.1Math.random()方法

9.3.2Random类

9.4大数字运算

9.4.1BigInteger类

9.4.2BigDecimal


在解决实际问题时,对数字的处理时十分普遍的,如数字问题、随机问题、商业货币问题、科学计数问题等。为了应对上述问题,java提供了处理相关问题的类。

9.1数字格式化

在java中没有格式化的数据遵循以下原则:

 

由于上述输出格式不能满足解决实际问题的需求,通常将结果格式化为指定格式形式后输出。在java中使用DecimalFormat类进行格式化操作。一般情况下可以在实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。

当格式化数字时,在DecimalFormat类中使用一些特殊字符构成一个格式化模板,使数字按照一定的特殊字符规则进行匹配。下表列举了格式化模板中的特殊字符:

9.2数字运算

java提供了一个执行基本数学运算的Math类,该类包括常用的数学运算方法,如三角函数方法、指数函数方法等。除此之外还提供了一些数学常量,如PI、E等。

9.2.1Math类 

在Math类中提供了众多数学函数方法,主要包括三角函数方法、指数函数方法等。这些方法都被定义为static形式,可以使用如下形式调用:

 

在Math类中除了函数方法外还存在一些数学常量,如PI、E等。这些数学常量作为Math类的成员变量出现,调用起来很简单。可以使用如下形式调用:

9.2.2常用数学运算方法

(1)三角函数方法

 

以上每个方法的参数和返回值都是double型的。除此之外,Math还提供了角度和弧度相互转换的方法toRadians()和toDegrees(),但是要注意角度和弧度的转换通常是不准确的。

(2)指数函数方法

(3)取整函数方法

在Math类中主要包括以下几种取整方法:

(4)取最大值、最小值、绝对值函数方法

9.3随机数

在java中提供了两种方式产生随机数,分别为调用Math类的random()方法和Random类提供的产生各种类型随机数的方法。

9.3.1Math.random()方法

在Math类中存在random()方法,用于产生随机数字,这个方法默认生成大于等于0.0小于1.0的double型随机数,即0.0=<Math.random() <1.0。虽然这个方法只可以产生0~1的随机数,但是只要在语句上稍加处理,就可以使用这个方法产生任意范围的随机数。如下图:

使用Math类的random()方法也可以生成随机字符,如:

进而推理出求任意两个字符之间的随机字符:

9.3.2Random类

除了Math类中的random()方法产生随机数外,java.util.Random类也可以通过创建对象来生成一个随机数生成器。语法如下:

 

以这种方式例化对象时,编译器以当前的系统时间作为随机数生成器的种子。此外,也可以在实例化Random对象时,设置随机数生成器的种子,语法如下:

在Random类中提供了获取各种数据类型随机数的方法,如下:

9.4大数字运算

在java中提供了大数字的操作类,即java.math.BigInteger类与java.math.BigDecimal类。这两个类用于高精度计算,其中BigInteger是针对大整数处理的类,而BigDecimal则是针对大小数的处理类。

9.4.1BigInteger类

 BigInteger类型的数字范围较Integer的数字范围要大得多。前文介绍过Integer是int的包装类,int的最大值为2^31-1,如果要处理更大的数,使用Integer类型数据就无法实现了,所以java中提供了BigInteger类来处理更大的数字。

BigInteger类具有很多构造函数,但最直接的一种就是参数以字符串的形式代表要处理的数字,语法如下:

如果将2转换为BigInteger类型,可以使用下面的语句进行初始化;

注意,2的双引号不能省略,因为参数是以字符串的形式存在的。

一旦创建了对象实例,就可以调用BigInteger类中的一些方法进行运算操作,下面列举了几种运算方法:

在上面实例中需要注意的是divideAndRemainder()方法,这个方法做除法操作,以数组的形式返回,数组中的第一个值为除法的商,第二个值为余数。

9.4.2BigDecimal

BigDecimal加入了小数的概念,支持任何精度的定点数,可以用它来精确计算货币值。

在BigDecimal类中常用的两个构造方法如下:

在上述方法中divide()方法的近似处理模式有多种设置方式,这些模式的名称与含义如下表所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值