教程列表
- Guava Optional类详解-处理null值
- Guava Preconditions类-检查参数
- Guava Ordering类处理排序功能
- Guava Objects类详解
- Guava Range类-范围处理
- Guava Throwables类-异常处理
- Guava 集合处理-Multiset接口
- Guava集合处理- Bimap接口
- Guava集合工具类-Table接口映射处理
- Guava字符串连接-Joiner类
- Guava字符串分割处理-Spiltter类
- Guava CharMatcher类处理JAVA char类型值
- Guava ASCII字符转换 CaseFormat类
- Guava处理java byte类型工具类-Bytes类
- Guava 处理java short实用工具类-Shorts类
- Guava处理java int实用工具类-Ints类
- Guava Longs类-long的实用工具类
- Guava Floats类-float基本类型的实用工具类
- Guava Doubles类-double基本类型的实用工具类
- Guava Chars类-char类型的实用工具类
- Guava Booleans类-布尔型基本的实用工具类
- Guava IntMath类-提供整型的Math实用方法
- Guava LongMath类-long基础类型的Math实用方法
- Guava Multimap类-映射到多个值
- Guava cache缓存工具类
开源项目
相关文章
更多最近更新
更多Guava LongMath类-long基础类型的Math实用方法
2019-04-23 23:22|来源: 网路
LongMath提供long基础类型的实用方法。
类声明
以下是com.google.common.math.LongMath类的声明:
@GwtCompatible(emulated=true)public final class LongMath extends Object
方法
S.N. | 方法及说明 |
---|---|
1 | static long binomial(int n, int k) 返回n个选择K,也称为n和k,或为Long.MAX_VALUE的二项式系数,如果long结果不相符。 |
1 | static long checkedAdd(long a, long b) 返回a和b的总和,只要它不会溢出。 |
2 | static long checkedMultiply(long a, long b) 返回a和b的产物,只要它不会溢出。 |
3 | static long checkedPow(long b, int k) 返回b的第k幂,只要它不会溢出。 |
4 | static long checkedSubtract(long a, long b) 返回a和b的差,只要它不会溢出。 |
5 | static long divide(long p, long q, RoundingMode mode) 返回除以p由q,使用指定的RoundingMode四舍五入的结果。 |
6 | static long factorial(int n) 返回n!,也就是说,前n个正整数的乘积,如果n==则返回1,或为Long.MAX_VALUE如果结果long不相符。 |
7 | static long gcd(long a, long b) 返回a, b的最大公约数。 |
8 | static boolean isPowerOfTwo(long x) 返回true,如果x代表两个幂。 |
9 | static int log10(long x, RoundingMode mode) 返回基数为10的对数x,根据指定的舍入模式圆形。 |
10 | static int log2(long x, RoundingMode mode) 返回基数为2-对数x,根据指定的舍入模式圆形。 |
11 | static long mean(long x, long y) 返回x和y的算术平均值,四舍五入向负无穷大。 |
12 | static int mod(long x, int m) 返回x模m,一个非负的值小于m以下。 |
13 | static long mod(long x, long m) 返回x模m,一个非负的值小于m以下。 |
14 | static long pow(long b, int k) 返回b为第k幂。 |
15 | static long sqrt(long x, RoundingMode mode) 返回x的平方根,大概指定的舍入模式。 |
方法继承
这个类继承了以下类方法:
java.lang.Object
LongMath 示例
使用所选择的任何编辑器创建下面的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
相关问答
更多使用两种不同类型的Guava ListenableFutures的结果(Use the results of two Guava ListenableFutures of different types)
Runnable listener = new Runnable() {
private boolean jobDone = false;
@Override
public synchronized void run() {
if (jobDone || !(future1.isDone() && future2.isDone())) {
return;
}
jobDone = true;
...
为什么Guava不为小的ImmutableLists使用专门的类?(Why does Guava not use specialized classes for small ImmutableLists?)
你能帮我理解这里涉及的权衡吗? 这是一个权衡: 性能 - 不分配临时数组可以节省成本。 但是,人们需要进行一些广泛的代码分析和基准测试来量化这种节省。 (我怀疑在大多数应用程序中它都是微不足道的。请阅读@Voo提供的这个链接 !) 可读性 - 拥有一堆额外的重载会使javadoc混乱。 可维护性 - 有一堆重载是以不需要临时对象的方式实现的,这需要大量的复制/粘贴编程,这使得将来的代码维护更加困难。 实用程序 - 这些重载的使用频率是多少? 我希望答案“很少”。 字节码占用空间 - 这些额外的重载
...
Guava EventBus:暂停活动发布(Guava EventBus: pause event posting)
我尝试了这种模式,使用子类分类从毒丸模式派生: public class SomethingChangedEvent {
private final String name;
public SomethingChangedEvent(String name) {
this.name = name;
}
@Override
public String toString() {
...
番石榴的IntervalTree(IntervalTree in Guava)
Guava没有提供这个,尽管你可以通过找到给定点之前和之后的第一个范围来在RangeSet之上构建这样的东西。 但一般来说,除了类型的比较排序之外,Guava Range对距离,度量或任何其他内容一无所知 。 他们不知道10比15更接近11 。 Guava doesn't provide this, though you might be able to build such a thing on top of a RangeSet by finding the first range befor
...
番石榴,gwt和eclipse(guava, gwt and eclipse)
好的,看看你的进口线。 它看起来像这样吗? import com.google.gwt.thirdparty.guava.common.base.Predicate;
那是错的。 将其更改为: import com.google.common.base.Predicate;
如果您在Eclipse中使用完成辅助 - 控制空格键 - 请研究提供的完成列表。 不要只选择第一个。 向右看,它将以浅灰色文本标识完成源。 如果您正在查看thirdparty.guava,请转到下一个,直到您看到googl
...
从Guava Multimap中的值返回键(Return key from value in Guava Multimap)
Guava为Multimap提供了一种反演方法。 请参见Multimaps.invertFrom 。 如果您不经常需要反演,或者您的multimap很小,这可能对您没问题。 但这种反转是一个昂贵的过程。 您可以通过简单地按照JB Nizet在评论中建议的正向和反向来获得一些效率。 然而,两者都可以是多重映射以允许非唯一性。 Guava supplies an inversion method for Multimap. See Multimaps.invertFrom. This might do
...
Guava ValueGraph的简单示例(Simple example of Guava ValueGraph)
Guava wiki提供了以下使用ValueGraph示例: MutableValueGraph<Integer, Double> weightedGraph = ValueGraphBuilder.directed().build();
weightedGraph.addNode(1);
weightedGraph.putEdgeValue(2, 3, 1.5); // also adds nodes 2 and 3 if not already present
weightedGraph.p
...
不兼容的库版本selenium / guava(Incompatible library version selenium / guava)
因为你对com.google.guava:guava:23.3 org.seleniumhq.selenium:selenium-java:3.0.1依赖性com.google.guava:guava:23.3使用org.seleniumhq.selenium:selenium-java:3.0.1可能会让你在十字路口。 但是Selenium发行说明清楚地提到了以下番石榴依赖性: Selenium v2.49.0 :Bump guava到19版 Selenium v3.1.0 :需要更新最新的番石
...
如何正确使用guava Closer(How to use guava Closer properly)
从番石榴自己的解释来看,你必须使用Throwable ,是的。 这是他们的示例代码段: public void foo() throws IOException {
Closer closer = Closer.create();
try {
InputStream in = closer.register(openInputStream());
OutputStream out = closer.register(openOutputStream());
// d
...
使用guava AbstractScheduledService(Using guava AbstractScheduledService)
AbstractScheduledServiced实现Service 。 Service接口描述了生命周期方法,包括startAsync 。 ServiceState枚举文字包含有关其含义的文档。 处于NEW状态的服务(刚刚创建): 处于此状态的服务处于非活动状态。 它做的工作量极少,占用资源极少。 要使服务执行某些有用的操作,您必须将其转换为RUNNING状态 此状态下的服务正在运行。 这就是为什么你必须在它做任何事之前启动服务的原因。 我还建议不要从构造函数中调用startAsync,而是从创
...