gpt4 book ai didi

java - 提高 BigDecimal 到双转换的性能

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:56:01 24 4
gpt4 key购买 nike

这是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。这是因为将 foo * 10^bar 有效地转换为 baz * 2^quux 的算法在保持非常具体的舍入语义的同时,非常令人讨厌和不愉快——请参阅 sun.misc.FloatingDecimal有关详细信息,或阅读 this paper

BigInteger.doubleValue() 另一方面,确实有很多优化机会,因为它不需要处理小数,而只需要处理整数。我有一个 JDK patch pending 优化 BigInteger.doubleValue() 略多于两个数量级,尽管它仍在等待审查。

更新:此修复已添加到 OpenJDK 8 中,并于 2014 年 3 月 18 日向公众开放。

关于java - 提高 BigDecimal 到双转换的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14739823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com