dur*_*597 6 java double performance bigdecimal
这是Jdk7-b147版本的 BigDecimal.doubleValue()
public double doubleValue(){
if (scale == 0 && intCompact != INFLATED)
return (double)intCompact;
// Somewhat inefficient, but guaranteed to work.
return Double.parseDouble(this.toString());
}
Run Code Online (Sandbox Code Playgroud)
他们承认这种方式效率低下!有没有比使用这种方法更好/更快的方法?
Lou*_*man 11
没有更好的方法将a转换BigDecimal为a double.这是因为算法转换foo * 10^bar到baz * 2^quux效率,同时保持非常具体的舍入语义,是非常讨厌和不愉快的-看到sun.misc.FloatingDecimal的细节,或阅读本文.
BigInteger.doubleValue()另一方面,确实有很多优化机会,因为它不需要处理小数,而只需要处理整数.我有一个待批准的JDK补丁,优化BigInteger.doubleValue()略高于两个数量级,但它仍在等待审核.
更新:该修复程序已添加到OpenJDK 8中,于2014年3月18日向公众开放.
| 归档时间: |
|
| 查看次数: |
3050 次 |
| 最近记录: |