Rya*_*des 14 java api bigdecimal
我注意到这个构造函数有很大的痛苦(即使在Stack Overflow上也是如此).人们使用它,即使文档明确指出:
这个构造函数的结果可能有点不可预测 http://java.sun.com/javase/6/docs/api/java/math/BigDecimal.html#BigDecimal(double)
可能不推荐使用的现有规范:我们建议弃用BigDecimal(double)构造函数,该构造函数目前提供的结果与Double.toString()方法不同.
尽管如此,构造函数还没有被弃用.
我很想听到有关这方面的任何看法.
coo*_*ird 20
考虑到行为BigDecimal(double)
是正确的,在我看来,我不太确定它真的会出现这样的问题.
我不完全同意BigDecimal(double)
构造函数中文档的措辞:
这个构造函数的结果可能有点不可预测.有人可能会认为
new BigDecimal(0.1)
用Java 编写会创建一个BigDecimal
完全等于0.1
(未缩放的值1
,带有比例1
),但它实际上等于0.1000000000000000055511151231257827021181583404541015625
.
(重点补充.)
我认为措辞应该是出乎意料的,而不是说不可预测,即便如此,对于那些不了解带有浮点值的十进制数表示的局限性的人来说,这也是意想不到的行为.
只要一个人守记住,浮点值不能代表精确所有十进制值,该值通过返回的BigDecimal(0.1)
是0.1000000000000000055511151231257827021181583404541015625
实际上是有意义的.
如果构造函数BigDecimal
实例化的对象BigDecimal(double)
是一致的,那么我认为结果是可预测的.
我猜测为什么BigDecimal(double)
构造函数不被弃用是因为行为可以被认为是正确的,只要知道浮点表示如何工作,构造函数的行为就不会太令人惊讶.
弃用已弃用。仅在特殊情况下,部分 API 才会被标记为已弃用。
因此,运行 FindBugs 作为构建过程的一部分。FindBugs 有一个检测器插件 API,也是开源的(LGPL、IIRC)。
归档时间: |
|
查看次数: |
10189 次 |
最近记录: |