跳过正文
  1. 文章/
  2. Java/
  3. 常用API/
  4. JDK原生/

8、数学

·1269 字·3 分钟· loading · loading · ·
Java 常用API JDK原生
GradyYoung
作者
GradyYoung
JDK原生 - 点击查看当前系列文章
§ 8、数学 「 当前文章 」

java.lang.Math
#

提供了一系列静态方法用于科学计算。

常用方法
#

绝对值、最大最小值
#

绝大部分方法都有重载,支持intlongfloatdouble

  • int abs(int a):绝对值
  • int max(int a,int b):最大值
  • int min(int a,int b):最小值

求整
#

  • double ceil(double a):返回大于或等于a的最小整数
  • double floor(double a):返回小于或等于a的最大整数
  • double rint(double a):返回最接近a的整数,如果两个同样接近的整数,那么取偶数
  • double round(double a):四舍五入取整

java.math.BigInteger
#

BigInteger可以表示不可变的任意精度的整数。提供java.lang.Math的所有相关方法。 另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、 位操作以及一些其他操作。

构建实例
#

// 利用字符串创建
BigInteger b1 = new BigInteger("1");
// 利用long创建
BigInteger b2 = BigInteger.valueOf(1L);

常用方法
#

  • BigInteger abs():返回绝对值
  • BigInteger add(BigInteger val):求this + val
  • BigInteger subtract(BigInteger val):求this - val
  • BigInteger multiply(BigInteger val):求this * val
  • BigInteger divide(BigInteger val):求this / val,保留整数部分
  • BigInteger remainder(BigInteger val):求this % val
  • BigInteger divideAndRemainder(BigInteger val):返回包含this / valthis % val两个值的数组
  • BigInteger pow(int exponent):求this ^ exponet,指数exponet

java.math.BigDecimal
#

BigDecimal表示不可变、任意精度的浮点数,一般的Float类和Double类可以用来做科学计算或工程计算。但在商业计算中,要求数字精度比较高,故用到BigDecimal类。BigDecimal类支持不可变的、任意精度的有符号十进制定点数。

构建实例
#

// long
BigDecimal d1 = BigDecimal.valueOf(1L);
// double
BigDecimal d2 = BigDecimal.valueOf(1.2);
// long
BigDecimal d3 = new BigDecimal(1L);
// double
BigDecimal d4 = new BigDecimal(1.2);
// String
BigDecimal d5 = new BigDecimal("1.2");

常用方法
#

  • BigDecimal abs():返回绝对值
  • BigDecimal add(BigDecimal val):求this + val
  • BigDecimal subtract(BigDecimal val):求this - val
  • BigDecimal multiply(BigDecimal val):求this * val
  • BigDecimal divide(BigDecimal val):求this / val
    • 如果结果除不尽,会抛出ArithmeticException异常,可以指定处理策略
    • BigDecimal divide(BigDecimal divisor, int scale, int roundingMode),例如
      • BigDecimal divide = d5.divide(d4, 20, BigDecimal.ROUND_UP);
  • BigDecimal remainder(BigDecimal val):求this % val
  • BigDecimal divideAndRemainder(BigDecimal val):返回包含this / valthis % val两个值的数组
  • BigDecimal pow(int exponent):求this ^ exponet,指数expone

java.text.DecimalFormat
#

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、浮点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。

常见符号
#

0
#

0出现在整数部分,表示整数位数最少0的个数,少了就补0

DecimalFormat format = new DecimalFormat("000");
System.out.println(format.format(99)); //099
System.out.println(format.format(9999)); //9999

0出现在小数部分,表示小数位数必须0的个数,如果多了就会四舍五入,少了就会补0

DecimalFormat format = new DecimalFormat("0.000");
System.out.println(format.format(99.99)); //99.990
System.out.println(format.format(99.9999)); //100.000

#

#出现在整数部分,并不会有格式化

DecimalFormat format = new DecimalFormat("#");
System.out.println(format.format(99)); //99
System.out.println(format.format(9999)); //9999

#出现在小数部分,表示最多为#的个数,如果少了不会补0,如果多了就四舍五入

DecimalFormat format = new DecimalFormat("#.###");
System.out.println(format.format(99.99)); //99.99
System.out.println(format.format(99.9999)); //100

%
#

%的作用是将小数转换为百分比形式,搭配0#可以格式化结果

DecimalFormat format = new DecimalFormat("#.##%");
System.out.println(format.format(0.8999)); //89.99%
System.out.println(format.format(0.89999)); //90%

其他用法
#

// 每三位使用,分割。注意只能使用 , 才会有分割效果
System.out.println(new DecimalFormat(",###").format(899677566)); // 899,677,566
// 嵌入自定义文本
System.out.println(new DecimalFormat("value is : #.###").format(3.1415)); // value is : 3.142
// 保留整数
System.out.println(new DecimalFormat("#").format(3.14)); // 3
JDK原生 - 点击查看当前系列文章
§ 8、数学 「 当前文章 」