问题标签 [apfloat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何将 Apfloat 转换为 BigDecimal?
我正在使用以下代码,其中k
a BigDecimal
:
Apfloat
似乎有类似intValue()
,的方法doubleValue()
,floatValue()
但我看不到如何转换Apfloat
为BigDecimal
.
java - 使用 Chudnovsky 算法计算 pi 时出错 - Java
我一直在尝试编写一个简单的程序来使用 Chudnovsky 算法计算 pi,但是我一直得到错误的值输出。我编写的最新代码如下并输出:
9.642715619298075837448823278218780086541162343253084414940204168864066834806498471622628399332216456e11
谁能告诉我哪里出错了。
正如 Peter de Rivaz 指出的那样,我正在丢弃 b 的值并固定输出现在是:-1.767799793836391576547649814416358906088880847407921749358841620214761790018058360012019158247490909
java - Apfloat Pi 返回 null
我正在使用1.8.3版的 Apfloat 库在我的计算过程中,我需要以适当的精度
计算pi的值。目前我正在使用方法,代码看起来像这样ApfloatMath.pi
在单元测试期间,我收到 NullPointerException,因为ApfloatMath.pi
正在返回null
。我尝试了很多东西,设置了不同的精度,包括Apcomplex.DEFAULT,并尝试创建apfloat.properties 资源包,但结果ApfloatMath.pi
仍然是null
。
我应该如何使用这种方法?
更新
我刚刚通过声明Pi
为解决了这个问题lazy val
:
此外,我确保在普通运行期间Pi
正确计算简单,而不是单元测试。val
所以主要问题变为:
在单元测试时的计算过程中, apfloat 库中的哪些内容可能未初始化?val
java - 如何使用 ApfloatMath.round()?
在这个片段中,我期望“2”作为结果?
还是应该以不同的方式使用ApfloatMath.round()?
java - 可以在 android 应用程序中使用 apfloat 库吗?
我正在开发安卓应用程序。(eclipse kepler) 我想在其中使用 3rd 方库 Apfloat。我已经为外部库配置了构建路径和引用(30 次),每次都重新启动、清理、重建,导入 org.apfloat.Apfloat;,使用了不同版本的 apfloat 库并尝试了该主题的解决方案:
[链接] NoClassDefFoundError - Eclipse 和 Android
但是,我的应用程序仍然崩溃。所以可以将 Apfloat lib 用于 android 应用程序开发,我只是不幸地把它弄对了。或 Apfloat 根本不能用于 android 应用程序。
java - 了解 Apfloat 及其精度
我正在使用一个使用毫米和英寸来绘制缩放图纸的应用程序。我需要在不丢失精度的情况下从一个转换到另一个。我正在为准确性而苦苦挣扎,并转向了 Apfloat 包。有人可以解释一下...如果我从 100 毫米开始,将其转换为英寸,然后再返回到毫米,为什么我会失去精度?
输出:
无论我设置多大的精度属性,我仍然会得到重复出现的 9.999 ......
java - 划分许多不同术语并在java中总结它们的有效方法
我想知道如何有效地划分 n 项并总结它们。我有 2 个数组,每个数组都包含大 Decimal,这些数组由名为 Apfloat 的外部库存储:
Apfloat[] nume=new Apfloat[n];
Apfloat[] deno==new Apfloat[n];
使用一个公式,我nume[]
用一些分数的分子来填充,我deno[]
用相同分数的分母来填充。现在我想找到这些分数的总和。所以,起初我只是将每个分子除以它对应的分母,然后将每个分子添加到一个变量sum
中,这样
sum=(nume[0]/deno[0])+(nume[1]/deno[1])+(nume[2]/deno[2])... +(nume[n]/deno[n]);
但是,这意味着我必须除以n
时间,而且由于除大数是一个非常耗时的过程,它会导致程序需要很长时间才能完成。
然后我尝试找到分母的 LCM 并将分子和分母乘以k
这样的数字 * k = LCM。这最后给了我一个分子和一个分母,所以我只需要除以 1 倍。然而,在这个过程中,我不得不乘以大约2n
倍,所以它比原来的方法慢,这让我想到了我的问题,有没有更有效/更快的方法来实现这一点?
提前致谢 :)
java - 使用 ApFloat 以特定精度舍入
ApFloat http://www.apfloat.org/是一个 C/C++/Java 数学库,可以计算平方根、指数、对数、三角/双曲函数、π 的数值等许多超越运算。任意精度,这在BigDecimal
Java 类中不可用。
我们都知道 4/3 的展开是无限的:1.333....所以当我们试图以任何特定的精度得到它时,不管它有多长,都会有信息丢失,但是取整模式很重要,也就是
- 4/3,精度为 5,地板舍入模式为 1.3333
- 4/3,精度为 5,上限舍入模式为 1.3334
不幸的是,在执行此类操作时无法指定舍入模式,可能是因为“由于实现中可能出现不同类型的舍入错误,因此无法保证任何方法的单调性。”
但是,有一种方法可以使用特定的精度和舍入模式来舍入 ApFloat 数字http://www.apfloat.org/apfloat_java/docs/org/apfloat/ApfloatMath.html#round-org.apfloat.Apfloat-long- java.math.RoundingMode-
一个简单的解决方案是使用额外的精度计算运算,然后使用原始精度和所需的舍入模式对结果进行舍入,如下例所示:
问题是:
- 这种方法[总是]正确吗?你知道任何反例或假阳性吗?
- 为了额外信息确保正确舍入,1 是添加到精度中的最小必要值吗?我认为在精度上加 1 是不够的,因为额外的数字可能已经被用于执行计算的内部算法四舍五入了。添加至少 2 个位置将确保第一个数字 - 正确的所需精度 - 将是数字的实数 - 无限 - 值中存在的真实数字,而不是四舍五入的数字。
- 你知道更好的方法吗?特别是避免两步的情况,因为 Apfloat - 像 BigDecimals - 是不可变的类,因此每一步都会创建新实例,这在使用具有数千或数百万个精度位置的数字时可能会出现问题。
java - ApfloatMath.pow 方法返回几乎正确的值
这是一个示例代码:
上面的代码执行 25 的平方根。
这将返回4.9999
.
我会认为这是任意的会返回正确的值。
java - 适用于 Android (Java) 的 Apfloat 任意精度库中的算术计算 - 弱设备上的低性能
我正在 Android Studio (Java) 中开发一个项目,该项目需要在使用任意精度方法(最大精度)的同时计算复数的算术表达式。我在我的项目中使用Apfloat库(基于任意精度)。该库提供了最大的准确性,并包含许多数学函数。
我需要立即得到计算结果(尽可能不延迟计算)。我以 100 位精度定义了所有(Apfloat)变量,以防止最终结果的累积误差。
问题是旧\弱设备(如三星 S3)上的计算时间太慢。例如计算简单表达式,如:sin(x1)*sin(x2)*sin(x3) 在弱设备上至少需要几秒钟。
我的问题是:
- 如何提高性能并减少计算时间?
- Apfloat 是否适合此目的?
- Apfloat 是否有其他替代品可以提供更好的性能(根据需要)?