这是 BigDecimal.doubleValue()
的 Jdk7-b147 版本。
public double doubleValue(){
if (scale == 0 && intCompact != INFLATED)
return (double)intCompact;
// Somewhat inefficient, but guaranteed to work.
return Double.parseDouble(this.toString());
}
他们承认这种方法效率低下!有没有比使用这种方法更好/更快的方法?
BigDecimal
转换为double
的逻辑非常复杂。(话虽如此,我有一个JDK补丁等待审核,可以将BigInteger.doubleValue()
的速度提高两个数量级以上。) - Louis WassermanBigInteger.{float,double}Value()
的补丁。Double.parseDouble
的逻辑与将BigDecimal
转换为double
几乎相同,可以在sun.misc.FloatingDecimal
中看到它的混乱之处。 - Louis Wasserman