位置:首页 > Java技术 > Guava在线教程 > Guava IntMath类

Guava IntMath类

IntMath提供整型的实用方法。

类声明

以下是com.google.common.math.IntMath类的声明:

@GwtCompatible(emulated=true)
public final class IntMath
   extends Object

方法

S.N. 方法及说明
1 static int binomial(int n, int k)
返回n个选择K,也被称为n和k,或Integer.MAX_VALUE的二项式系数,如果结果在一个int不适合
2 static int checkedAdd(int a, int b)
返回a和b的总和,只要它不会溢出。
3 static int checkedMultiply(int a, int b)
返回a和b的产物,只要它不会溢出。
4 static int checkedPow(int b, int k)
返回b的第k幂,只要它不会溢出。
5 static int checkedSubtract(int a, int b)
返回a和b的差,只要它不会溢出。
6 static int divide(int p, int q, RoundingMode mode)
返回除以p由q,使用指定RoundingMode的四舍五入结果。
7 static int factorial(int n)
返回n个!,也就是说,前n个正整数的乘积,如果n==0则返回1,或者是Integer.MAX_VALUE如果结果不适合在一个int值。
8 static int gcd(int a, int b)
返回a, b的最大公约数。
9 static boolean isPowerOfTwo(int x)
返回true,如果x代表两个幂。
10 static int log10(int x, RoundingMode mode)
返回基数为10的对数x,根据指定的舍入模式圆形。
11 static int log2(int x, RoundingMode mode)
返回基数为2-对数x,根据指定的舍入模式圆形。
12 static int mean(int x, int y)
返回x和y的算术平均值,取整。
13 static int mod(int x, int m)
返回x模m,一个非负的值小于m以下。
14 static int pow(int b, int k)
返回b的第k幂。
15 static int sqrt(int x, RoundingMode mode)
返回x的平方根,大概指定的舍入模式。

方法继承

这个类从以下类继承的方法:

  • java.lang.Object

IntMath 例子

选择使用任何编辑器创建以下java程序在 C:/> Guava

GuavaTester.java
import java.math.RoundingMode;
import com.google.common.math.IntMath;

public class GuavaTester {

   public static void main(String args[]){
      GuavaTester tester = new GuavaTester();
      tester.testIntMath();
   }

   private void testIntMath(){
      try{
         System.out.println(IntMath.checkedAdd(Integer.MAX_VALUE, Integer.MAX_VALUE));
      }catch(ArithmeticException e){
         System.out.println("Error: " + e.getMessage());
      }

      System.out.println(IntMath.divide(100, 5, RoundingMode.UNNECESSARY));
      try{
         //exception will be thrown as 100 is not completely divisible by 3 thus rounding
         // is required, and RoundingMode is set as UNNESSARY
         System.out.println(IntMath.divide(100, 3, RoundingMode.UNNECESSARY));
      }catch(ArithmeticException e){
         System.out.println("Error: " + e.getMessage());
      }

      System.out.println("Log2(2): "+IntMath.log2(2, RoundingMode.HALF_EVEN));

      System.out.println("Log10(10): "+IntMath.log10(10, RoundingMode.HALF_EVEN));

      System.out.println("sqrt(100): "+IntMath.sqrt(IntMath.pow(10,2), RoundingMode.HALF_EVEN));

      System.out.println("gcd(100,50): "+IntMath.gcd(100,50));

      System.out.println("modulus(100,50): "+IntMath.mod(100,50));

      System.out.println("factorial(5): "+IntMath.factorial(5));
   }
}

验证结果

使用javac编译器编译如下类

C:\Guava>javac GuavaTester.java

现在运行GuavaTester看到的结果

C:\Guava>java GuavaTester

看到结果。

Error: overflow
20
Error: mode was UNNECESSARY, but rounding was necessary
Log2(2): 1
Log10(10): 1
sqrt(100): 10
gcd(100,50): 50
modulus(100,50): 0
factorial(5): 120