📌  相关文章
📜  Java番石榴 | LongMath 类的 log2(long x, RoundingMode mode) 带示例(1)

📅  最后修改于: 2023-12-03 15:16:36.208000             🧑  作者: Mango

Java番石榴 | LongMath 类的 log2(long x, RoundingMode mode) 带示例

Java番石榴是一组Java数学库,提供高精度计算和各种数学函数。其中的LongMath类提供了许多适用于整数的数学函数,log2(long x, RoundingMode mode)就是其中一个。

函数介绍

log2(long x, RoundingMode mode)接受一个long类型的参数x,返回以2为底的x的对数,其中mode参数指定向下取整还是向上取整。RoundingMode共有六种取值:

  • UP:向正无穷取整
  • DOWN:向负无穷取整
  • CEILING:向正无穷取整,如果x是整数则不变
  • FLOOR:向负无穷取整,如果x是整数则不变
  • HALF_UP:四舍五入
  • HALF_DOWN:五舍六入

如果x小于等于0,函数会抛出IllegalArgumentException。

示例
import com.google.common.math.LongMath;
import java.math.RoundingMode;

public class Log2Demo {
    public static void main(String[] args) {
        long x1 = 16;
        long x2 = 15;
        long x3 = 17;
        
        System.out.format("log2(%d, FLOOR) = %d%n", x1, LongMath.log2(x1, RoundingMode.FLOOR));
        System.out.format("log2(%d, FLOOR) = %d%n", x2, LongMath.log2(x2, RoundingMode.FLOOR));
        System.out.format("log2(%d, CEILING) = %d%n", x2, LongMath.log2(x2, RoundingMode.CEILING));
        try {
            System.out.format("log2(%d, FLOOR) = %d%n", 0, LongMath.log2(0, RoundingMode.FLOOR));
        } catch (IllegalArgumentException e) {
            System.out.println(e.getMessage());
        }
    }
}

输出:

log2(16, FLOOR) = 4
log2(15, FLOOR) = 3
log2(15, CEILING) = 4
x must be positive
总结

LongMath.log2(long x, RoundingMode mode)是一个十分实用的函数,它可以帮助我们快速计算以2为底的x的对数,而且可以选择不同的取整方式。本文的示例代码也给出了log2函数的使用示例,希望对大家有所帮助。