gpt4 book ai didi

java - 如何将 Apfloat 转换为 BigDecimal?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:27:06 26 4
gpt4 key购买 nike

我使用以下代码,其中 k 是一个 BigDecimal:

Apfloat power = ApfloatMath.pow(new Apfloat(-1), new Apfloat(k));

Apfloat 似乎有 intValue()doubleValue()floatValue() 之类的方法,但我看不到如何将 Apfloat 转换为 BigDecimal

最佳答案

BigDecimals 最好从字符串或使用 BigDecimal.valueOf(double) 静态构造函数生成。

对于您的具体要求,请从以下内容开始:

public static asBigDecimal (Apfloat val) {
return BigDecimal.valueOf( val.doubleValue());
}

特别要避免调用 new BigDecimal(double),因为它会生成精确 浮点位的十进制表示形式,而且可能需要大量的小数这样做的数字。

另一方面,BigDecimal.valueOf(double)Double.toString(double) 有特定的逻辑来表示 double -> 小数,没有虚假的深度小数化。

参见:

  • java.math.BigDecimal.BigDecimal(double)

引用自 Javadoc:

此构造函数的结果可能有些不可预测。人们可能会假设将 new BigDecimal(0.1) 写成Java 创建一个 BigDecimal,它正好等于0.1(未缩放的值为 1,缩放为 1),但它是实际上等于 0.1000000000000000055511151231257827021181583404541015625。这是因为 0.1 不能精确表示为double(或者,就此而言,作为任何有限长度)。因此,传递的值in 到构造函数不完全等于 0.1,尽管有外表。

关于java - 如何将 Apfloat 转换为 BigDecimal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19748069/

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