Guava指南个人翻译——Math

Math – Guava的数学工具包

这个包中含有各种各样的数学工具类,比 JDK 更优化, 测试更完善

Contents 综述

  • Guava Math 提供了为基本数据类型而设计的独立的类[IntMath],[LongMath],
    [DoubleMath], 和 [BigIntegerMath], 这些类具有这相互平行的结构,
    他们的方法都是基于相应数据类型而进行实现.
    **请注意: 在com.google.common.primitives包中, 有一些函数或者类可能看起来不那么的’数学’,
    比如 [Ints].**
  • Guava 为单个或者成对的数据集提供了各种统计计算的方法(比如求平均值,中位数等等).
    如果想使用 Guava Math 包,请先阅读这个指南Stats 而不是去阅读 Java DOC.
  • [LinearTransformation] 代表着 y = mx + b(这是个一次函数) 中的线性变换;
    比如英尺和米之间的换算(英尺 = 米 * 3.2808399 ), 或者开氏温度与华氏温度之间的换算(℉ = 1.8 * K - 459.67 ).

Examples 举个栗子

int logFloor = LongMath.log2(n, FLOOR);

int mustNotOverflow = IntMath.checkedMultiply(x, y);

long quotient = LongMath.divide(knownMultipleOfThree, 3, RoundingMode.UNNECESSARY); // fail fast on non-multiple of 3

BigInteger nearestInteger = DoubleMath.roundToBigInteger(d, RoundingMode.HALF_EVEN);

BigInteger sideLength = BigIntegerMath.sqrt(area, CEILING);

Why use these? 为什么使用这些工具类?

  • Guava Math的工具类为很多不常见的溢出情况都做了充分的测试. 溢出的语义也在相关的文档中进行了清晰的定义.
    如果预检查不能通过, 则快速的返回失败(异常).
  • Guava Math 已经进行了基准测试和最佳的优化, 尽管因为不同的硬件原因会造成不可避免的性能差异,
    但是 Guava Math 通常情况下的运行速度与 Apache CommonsMathUtils 互相媲美,
    在某些场景下, Guava Math 甚至更优.
  • 这些类在设计之初就考虑到了代码的可读性、帮助养成好的编码习惯。
    比如 IntMath.log2(x, CEILING) 在你进行快速浏览代码的时候也能清晰快速的了解它的含义,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值