Java 简明教程

Java.math.BigDecimal Class

Introduction

java.math.BigDecimal 类提供了用于算术、比例调整、舍入、比较、哈希和格式转换的操作。

toString() 方法提供 BigDecimal 的规范表示。它使用户可以完全控制舍入行为。

提供了两种用于操纵 BigDecimal 比例的操作 -

  1. scaling/rounding operations

  2. decimal point motion operations

此类及其迭代器实现了 Comparable 接口的所有可选方法。

Class declaration

以下是 java.math.BigDecimal 类的声明 -

public class BigDecimal
   extends Number
      implements Comparable<BigDecimal>

Field

以下是 java.math.BigDecimal 类的字段 -

  1. static BigDecimal ONE - 值为 1,比例为 0。

  2. static int ROUND_CEILING - 舍入模式为朝正无穷舍入。

  3. static int ROUND_DOWN - 舍入模式为朝零舍入。

  4. static int ROUND_FLOOR - 舍入模式为朝负无穷舍入。

  5. static int ROUND_HALF_DOWN - 舍入模式为朝“最近邻”舍入,除非两个邻域都等距,在这种情况下向下舍入。

  6. static int ROUND_HALF_EVEN - 舍入模式为朝“最近邻”舍入,除非两个邻域都等距,在这种情况下朝偶数邻域舍入。

  7. static int ROUND_HALF_UP - 舍入模式为朝“最近邻”舍入,除非两个邻域都等距,在这种情况下向上舍入。

  8. static int ROUND_UNNECESSARY - 舍入模式为断言请求的操作具有精确的结果,因此无需舍入。

  9. static int ROUND_UP - 舍入模式为朝远离零的方向舍入。

  10. static BigDecimal TEN − 值为 10,小数为 0。

  11. static BigDecimal ZERO − 值为 0,小数为 0。

Class constructors

Sr.No.

Constructor & Description

1

BigDecimal(BigInteger val) 此构造函数用于将 BigInteger 转换为 BigDecimal

2

BigDecimal(BigInteger unscaledVal, int scale) 此构造函数用于将 BigInteger 未缩放值和整数比例转换为 BigDecimal

3

BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) 此构造函数用于将 BigInteger 未缩放值和整数比例转换为 BigDecimal,并根据环境设置进行舍入。

4

BigDecimal(BigInteger val, MathContext mc) 此构造函数用于将 BigInteger 转换为 BigDecimal,并根据环境设置进行舍入。

5

BigDecimal(char[ ] in) 此构造函数用于将 BigDecimal 的字符数组表示转换为 BigDecimal,接受与 BigDecimal(String) 构造函数相同的字符序列。

6

BigDecimal(char[ ] in, int offset, int len) 此构造函数用于将 BigDecimal 的字符数组表示转换为 BigDecimal,接受与 BigDecimal(String) 构造函数相同的字符序列,同时允许指定子数组。

7

BigDecimal(char[ ] in, int offset, int len, MathContext mc) 此构造函数用于将 BigDecimal 的字符数组表示转换为 BigDecimal,接受与 BigDecimal(String) 构造函数相同的字符序列,同时允许指定子数组并根据环境设置进行舍入。

8

BigDecimal(char[ ] in, MathContext mc) 此构造函数用于将 BigDecimal 的字符数组表示转换为 BigDecimal,接受与 BigDecimal(String) 构造函数相同的字符序列,并根据环境设置进行舍入。

9

BigDecimal(double val) 此构造函数用于将 double 转换为一个 BigDecimal,它准确表示 double 的二进制浮点数的值。

10

BigDecimal(double val, MathContext mc) 此构造函数用于将 double 转换为一个 BigDecimal,并根据上下文设置进行舍入。

11

BigDecimal(int val) 此构造函数用于将 int 转换为一个 BigDecimal。

12

BigDecimal(int val, MathContext mc) 此构造函数用于将 int 转换为一个 BigDecimal,并根据上下文设置进行舍入。

13

BigDecimal(long val) 此构造函数用于将 long 转换为一个 BigDecimal。

14

BigDecimal(long val, MathContext mc) 此构造函数用于将 BigInteger 转换为一个 BigDecimal。

15

BigDecimal(String val) 此构造函数用于将 BigDecimal 的字符串表示形式转换为一个 BigDecimal。

16

BigDecimal(String val, MathContext mc) 此构造函数用于将 BigDecimal 的字符串表示形式转换为一个 BigDecimal,接受 BigDecimal(String) 构造函数中相同类别的字符串,并根据上下文设置进行舍入。

Class methods

Sr.No.

Method & Description

1

BigDecimal abs() 本方法返回一个 BigDecimal,其值是此 BigDecimal 的绝对值,其标度是 this.scale()。

2

BigDecimal abs(MathContext mc) 本方法返回一个 BigDecimal,其值是此 BigDecimal 的绝对值,并根据上下文设置进行舍入。

3

BigDecimal add(BigDecimal augend) 本方法返回一个 BigDecimal,其值为 (this + augend),其标度为 max(this.scale(), augend.scale())。

4

BigDecimal add(BigDecimal augend, MathContext mc) 本方法返回一个 BigDecimal,其值为 (this + augend),并根据上下文设置进行舍入。

5

byte byteValueExact() 本方法将 BigDecimal 转换为一个字节,检查是否有丢失的信息。

6

int compareTo(BigDecimal val) 本方法将 BigDecimal 与指定 BigDecimal 进行比较。

7

BigDecimal divide(BigDecimal divisor) 本方法返回一个 BigDecimal,其值为 (this / divisor),其首选标度为 (this.scale() - divisor.scale());如果无法表示确切的商(因为它具有不终止的十进制展开式),则抛出 ArithmeticException。

8

BigDecimal divide(BigDecimal divisor, int roundingMode) 本方法返回一个 BigDecimal,其值为 (this / divisor),其标度为 this.scale()。

9

BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 本方法返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。

10

BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode) 本方法返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。

11

BigDecimal divide(BigDecimal divisor, MathContext mc) 本方法返回一个 BigDecimal,其值为 (this / divisor),并根据上下文设置进行舍入。

12

BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode) 此方法返回一个大十进制数,其值为(this/除数),且其刻度为 this.scale()。

13

BigDecimal[ ] divideAndRemainder(BigDecimal divisor) 此方法返回一个包含两个元素的大十进制数数组,该数组包含 divideToIntegralValue 的结果,然后是两个操作数上的余数的结果。

14

BigDecimal[ ] divideAndRemainder(BigDecimal divisor, MathContext mc) 此方法返回一个包含两个元素的大十进制数数组,该数组包含 divideToIntegralValue 的结果,然后是根据上下文设置按四舍五入计算的两个操作数上的余数的结果。

15

BigDecimal divideToIntegralValue(BigDecimal divisor) 此方法返回一个大十进制数,其值为商的整数部分(this/除数),向下舍入。

16

BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc) 此方法返回一个大十进制数,其值为 (this/除数) 的整数部分。

17

double doubleValue() 此方法将大十进制数转换为双精度。

18

boolean equals(Object x) 此方法将大十进制数与指定的对象进行比较以确定是否相等。

19

float floatValue() 此方法将大十进制数转换为浮点数。

20

int hashCode() 此方法为该大十进制数返回哈希码。

21

int intValue() 此方法将大十进制数转换为 int。

22

int intValueExact() 此方法将大十进制数转换为 int,并检查丢失的信息。

23

long longValue() 此方法将大十进制数转换为 long。

24

long longValueExact() 此方法将大十进制数转换为 long,并检查丢失的信息。

25

BigDecimal max(BigDecimal val) 此方法返回此大十进制数和 val 的较大值。

26

BigDecimal min(BigDecimal val) 此方法返回此大十进制数和 val 的较小值。

27

BigDecimal movePointLeft(int n) 此方法返回一个大十进制数,该大十进制数等效于 decimal point 移动 n 位到左侧的结果。

28

BigDecimal movePointRight(int n) 此方法返回一个大十进制数,该大十进制数等效于 decimal point 移动 n 位到右侧的结果。

29

BigDecimal multiply(BigDecimal multiplicand) 此方法返回一个大十进制数,其值为(this×被乘数),且其刻度为(this.scale() + 被乘数.scale())。

30

BigDecimal multiply(BigDecimal multiplicand, MathContext mc) 此方法返回一个大十进制数,其值为(this×被乘数),并根据上下文设置进行舍入。

31

BigDecimal negate() 这个方法返回一个 BigDecimal,它的值是 (+this),小数位数是 this.scale()。

32

BigDecimal negate(MathContext mc) 这个方法返回一个 BigDecimal,它的值是 (-this),其舍入根据上下文设置进行。

33

BigDecimal plus() 这个方法返回一个 BigDecimal,它的值是 (+this),小数位数是 this.scale()。

34

BigDecimal plus(MathContext mc) 这个方法返回一个 BigDecimal,它的值是 (+this),其舍入根据上下文设置进行。

35

BigDecimal pow(int n) 这个方法返回一个 BigDecimal,它的值为 (thisn),该幂运算精确地计算,小数位数不受限。

36

BigDecimal pow(int n, MathContext mc) 这个方法返回一个 BigDecimal,它的值为 (thisn)。

37

int precision() 这个方法返回这个 BigDecimal 的小数位数。

38

BigDecimal remainder(BigDecimal divisor) 这个方法将这个 BigDecimal 转换为一个字节,检查丢失的信息。

39

BigDecimal remainder(BigDecimal divisor, MathContext mc) 这个方法返回一个 BigDecimal,它的值为 (this % divisor),其舍入根据上下文设置进行。

40

BigDecimal round(MathContext mc) 这个方法返回一个 BigDecimal,其舍入根据 MathContext 设置进行。

41

int scale() 这个方法返回这个 BigDecimal 的小数位数。

42

BigDecimal scaleByPowerOfTen(int n) 这个方法返回一个 BigDecimal,它的数值等于 (this * 10n)。

43

BigDecimal setScale(int newScale) 这个方法返回一个 BigDecimal,它的精度指定的值,它的值在数值上等于这个 BigDecimal。

44

BigDecimal setScale(int newScale, int roundingMode) 这个方法返回一个 BigDecimal,它的精度指定的值,它的未缩放值为乘以或除以该 BigDecimal 的未缩放值并乘以十的适当次幂来确定,以保持其整体值。

45

BigDecimal setScale(int newScale, RoundingMode roundingMode) 这个方法返回一个 BigDecimal,它的精度指定的值,它的未缩放值为乘以或除以该 BigDecimal 的未缩放值并乘以十的适当次幂来确定,以保持其整体值。

46

short shortValueExact() 这个方法将 BigDecimal 转换为一个 short,检查丢失的信息。

47

int signum() 这个方法返回这个 BigDecimal 的符号函数。

48

BigDecimal stripTrailingZeros() 这个方法返回一个 BigDecimal,在数值上等于这个 BigDecimal,但是尾随的零从表示中移除。

49

BigDecimal subtract(BigDecimal subtrahend) 这个方法返回一个 BigDecimal,它的值为 (this - subtrahend),它的精度是 max(this.scale(), subtrahend.scale())。

50

BigDecimal subtract(BigDecimal subtrahend, MathContext mc) 此方法返回一个 BigDecimal,其值是 (this - subtrahend),并根据上下文设置进行舍入。

51

BigInteger toBigInteger() 此方法将 BigDecimal 转换为 BigInteger。

52

BigInteger toBigIntegerExact() 此方法将 BigDecimal 转换为 BigInteger,检查是否存在丢失的信息。

53

String toEngineeringString() 此方法返回此 BigDecimal 的字符串表示形式,如果需要指数,则使用工程记数法。

54

String toPlainString() 此方法返回此 BigDecimal 的字符串表示形式,不带指数字段。

55

String toString() 此方法返回此 BigDecimal 的字符串表示形式,如果需要指数,则使用科学记数法。

56

BigDecimal ulp() 此方法返回此 BigDecimal 的 ulp(最后一位单位)的大小。

57

BigInteger unscaledValue() 此方法返回一个 BigInteger,其值是此 BigDecimal 的非缩放值。

58

static BigDecimal valueOf(double val) 此方法使用 Double.toString(double) 方法提供的双精度规范字符串表示形式将双精度数转换为 BigDecimal。

59

static BigDecimal valueOf(long val) 此方法将 long 值转换为具有零 scale 的 BigDecimal。

60

static BigDecimal valueOf(long unscaledVal, int scale) 此方法将一个 long 非缩放值和一个 int scale 转换为 BigDecimal。