不要过分相信自己的直觉之 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 内部是如何处理的。