当前位置: 首页 > 文档资料 > Guava 中文文档 >

LongMath

优质
小牛编辑
140浏览
2023-12-01

LongMath提供实用程序方法。

Class 声明 (Class Declaration)

以下是com.google.common.math.LongMath类的声明 -

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

方法 (Methods)

Sr.No方法和描述
1

static long binomial(int n, int k)

返回n选择k,也称为n和k的二项式系数,如果结果不适合long,则返回Long.MAX_VALUE。

2

static long checkedAdd(long a, long b)

返回a和b的总和,前提是它不会溢出。

3

static long checkedMultiply(long a, long b)

返回a和b的乘积,前提是它不会溢出。

4

static long checkedPow(long b, int k)

如果没有溢出,则将b返回到k次幂。

5

static long checkedSubtract(long a, long b)

返回a和b的差值,前提是它不会溢出。

6

static long divide(long p, long q, RoundingMode mode)

返回将p除以q的结果,使用指定的RoundingMode进行舍入。

7

static long factorial(int n)

返回n !,即前n个正整数的乘积,如果n == 0,则返回1;如果结果不适合long,则返回Long.MAX_VALUE。

8

static long gcd(long a, long b)

返回a,b的最大公约数。

9

static boolean isPowerOfTwo(long x)

如果x表示2的幂,则返回true。

10

static int log10(long x, RoundingMode mode)

返回x的以10为底的对数,根据指定的舍入模式进行舍入。

11

static int log2(long x, RoundingMode mode)

返回x的base-2对数,根据指定的舍入模式进行舍入。

12

static long mean(long x, long y)

返回x和y的算术平均值,舍入为负无穷大。

13

static int mod(long x, int m)

返回x mod m,一个小于m的非负值。

14

static long mod(long x, long m)

返回x mod m,一个小于m的非负值。

15

static long pow(long b, int k)

将b返回到第k个幂。

16

static long sqrt(long x, RoundingMode mode)

返回x的平方根,使用指定的舍入模式进行舍入。

方法继承 (Methods Inherited)

该类继承以下类中的方法 -

  • java.lang.Object

LongMath类的示例

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

GuavaTester.java

import java.math.RoundingMode;
import com.google.common.math.LongMath;
public class GuavaTester {
   public static void main(String args[]) {
      GuavaTester tester = new GuavaTester();
      tester.testLongMath();
   }
   private void testLongMath() {
      try {
         System.out.println(LongMath.checkedAdd(Long.MAX_VALUE, Long.MAX_VALUE));
      } catch(ArithmeticException e) {
         System.out.println("Error: " + e.getMessage());
      }
      System.out.println(LongMath.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(LongMath.divide(100, 3, RoundingMode.UNNECESSARY));
      } catch(ArithmeticException e) {
         System.out.println("Error: " + e.getMessage());
      }
      System.out.println("Log2(2): " + LongMath.log2(2, RoundingMode.HALF_EVEN));
      System.out.println("Log10(10): " + LongMath.log10(10, RoundingMode.HALF_EVEN));
      System.out.println("sqrt(100): " + LongMath.sqrt(LongMath.pow(10,2), RoundingMode.HALF_EVEN));
      System.out.println("gcd(100,50): " + LongMath.gcd(100,50));
      System.out.println("modulus(100,50): " + LongMath.mod(100,50));
      System.out.println("factorial(5): " + LongMath.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