不要过分相信自己的直觉之 RateLimiter.getRate()
最近使用 Guava 中 RateLimiter.getRate() 方法时遇到了一个反直觉的现象,这里贴出来给大家分享一下。
现象
我们先看下下面这段代码
1 | public static void main(String[] args) { |
直觉上最终会输出 10.0,实际最终也是输出了 10.0。
可是如果我们将上述代码中的 10.0D 变为 15.0D,结果会输出什么呢?
1 | public static void main(String[] args) { |
执行后输出的值竟然是 14.999999999999998。看到这个结果我觉得非常的奇怪,毕竟直觉告诉我应该输出 15.0 才对。
刨根问底
看到这样的现象,我们首先就要从源码上分析一下,看一下 Guava 内部是如何处理的。