Java中使用幂法计算n次方根

2024-01-14

我试图在java中使用得到立方根Math.pow(n, 1.0/3)但因为它除以双精度数,所以它不会返回确切的答案。例如,对于 125,结果为 4.9999999999。有解决方法吗?我知道有一个立方根函数,但我想解决这个问题,以便我可以计算更高的根。

我不想四舍五入,因为我想通过执行以下操作来知道数字是否具有整数根:Math.pow(n, 1.0 / 3) % ((int) Math.pow(n, 1.0 / 3)).


由于不可能进行任意精度的微积分double,你有三个选择:

  1. 定义一个精度,您可以根据该精度决定是否doublevalue 是否为整数。
  2. 测试是否四舍五入的值double你得到的是一个正确的结果。
  3. 在 a 上进行微积分BigDecimal http://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html对象,支持任意精度的双精度值。

Option 1

private static boolean isNthRoot(int value, int n, double precision) {
    double a = Math.pow(value, 1.0 / n);
    return Math.abs(a - Math.round(a)) < precision; // if a and round(a) are "close enough" then we're good
}

这种方法的问题是如何定义“足够接近”。这是一个主观问题,取决于您的要求。

Option 2

private static boolean isNthRoot(int value, int n) {
    double a = Math.pow(value, 1.0 / n);
    return Math.pow(Math.round(a), n) == value;
}

这种方法的优点是不需要定义精度。然而,我们还需要执行另一项操作pow操作,因此这会影响性能。

Option 3

没有内置方法来计算 BigDecimal 的双倍幂。这个问题 https://stackoverflow.com/q/3579779/1743880会让您深入了解如何做到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中使用幂法计算n次方根 的相关文章

  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 将多种日期时间格式转换为一种标准格式

    我正在尝试在 R 中执行一些简单的操作 在加载表后 我遇到了一个组合了多种格式的日期列 Date 1 28 14 6 43 PM 1 29 14 4 10 PM 1 30 14 12 09 PM 1 30 14 12 12 PM 02 03
  • 从 Django JSONField 获取值

    我正在尝试从模型中的 JSONField 检索值 但出现错误 Api 对象没有属性 openapi spec info title class Api models Model Model to hold infomation on the
  • 在 woocommerce 搜索中包含自定义字段值

    我尝试在 woocommerce 中包含自定义字段值search但我有一个问题 在 Google 和 Stack 上 我也看到了带有 pre get posts 的示例 所以我认为这是一个很好的方向 我编写了如下代码 function cu
  • MVC3 Html.DisplayFor -- 是否可以让该控件生成 ID?

    我希望能够显示一些文本 而且还可以通过 jQuery 修改文本 如果我使用 EditorFor 而不是 DisplayFor 我会看到输入控件的 ID 不过 我不希望该值以这种方式可编辑 因此 我将其设为 DisplayFor 但它不会为该
  • 类型必须满足静态生存期

    我正在尝试增加 Rust 和 GTK RS 应用程序的结构 但我不知道如何处理事件连接 我发现问题出在错误的生命周期中 但我真的不明白如何解决它 derive Debug struct CreatingProfileUI window gt
  • SQL 计数(*) 和非重复

    为什么我们不能使用count distinct 在 SQL 中 比如计算所有不同的行 select count from select distinct from MyTable as T 尽管我强烈建议您重新考虑使用的任何查询DISTIN
  • 是什么 ”?” php 中使用的 URL 中的符号?

    我是 PHP 新手 在学习PHP语言的过程中 我注意到 有些网站会出现这样的URL www website com profile php user roa3 我的问题 是什么 符号用于 如果我要开发一个 php 网站 我必须在 URL 中
  • 如何将 ImageMagick 环境变量传递给 nginx mongrels?

    我的 Rails 应用程序使用 ImageMagick 但应用程序在尝试执行 ImageMagick 命令 识别 时失败 我通过在 Apache 配置中传递以下环境变量解决了开发中的这个问题 我正在运行 Apache Passenger S
  • 我应该在 DTO 中使用构建器模式吗?

    这可能是一个相当主观的问题 但我想知道更多的意见 我使用 Spring MVC 构建了 Rest API 服务 并实现了 DTO 域 实体模式 我想知道您对实施该法案有何看法建造者模式 https en wikipedia org wiki
  • “ecb”不适用于 Cordova 和推送插件

    我尝试使用演示使用 PushNotification 注册我的设备 这不起作用 打印 Cordova PushNotification Plugin Demo 和 registering android 并查看警报 OK successHa
  • 在 Java 中应该使用什么舍入方法来计算金钱?

    假设我在 Java 中有一个代表金钱的十进制值 舍入这些值的最佳方法是什么 例如 如果我有一个根据税率计算的值 那么我最终会得到以下结果 5 3999999999999995作为税额 我是否应该将其四舍五入到小数点后两位 double d
  • 为什么我的 readFileSync 函数没有执行? [复制]

    这个问题在这里已经有答案了 我正在尝试从 Node js 中的文件中读取数据 这是我的代码 const cheerio require cheerio var fs require fs var path process argv 2 va
  • 使用 json_encode() 引号中的数字[重复]

    这个问题在这里已经有答案了 各种第三方公司迫使我们使用非常规代码并产生非标准输出 我们正在使用标准json encode 在 JS HTML 中输出 JSON 变量 如下所示 custom 1 2 2 7 3 5 现在他们告诉我们这对他们不
  • 在 UWP 中使用 RenderTargetBitmap 时出错

    我正在尝试创建位图图像 并具有以下代码 RenderTargetBitmap renderTargetBitmap new RenderTargetBitmap await renderTargetBitmap RenderAsync ui
  • 带有动态表单的 jquery 验证插件

    如何使用此代码 来自demo http jquery bassistance de validate demo ajaxSubmit intergration demo html 如果尚未创建表单 jQuery form validate
  • 如何使用 SPARQL 从 Wikidata 获取属性标签

    我正在使用 SPARQLWrapper 将 SPARQL 查询发送到 Wikidata 目前我正在尝试查找实体的所有属性 例如 使用一个简单的元组 例如 wd Q11663 a b 这本身是有效的 但我试图为返回的属性和实体找到人类可读的标
  • Firebase Admin SDK 应用操作代码进行电子邮件验证

    火力基地自定义电子邮件操作处理程序指南 https firebase google com docs auth custom email handler给出了在通过 Firebase 托管的网站的自定义 URL 上验证用户电子邮件地址的示例
  • Kafka Confluence:JDBC 接收器连接器中的删除模式给出错误,并且无法在“pk.fields”中使用复合键

    我有两个问题 1 我启用了delete enabled as true 但由于它需要pk mode被设置为record key我无法使用 MySQL 表的复合键 因为我可以在设置时使用pk mode as record value 我尝试在
  • 解决 Clang 下缺乏 Yz 机器约束的问题?

    我们使用内联汇编来使 SHA 指令可用 如果 SHA 没有定义 在 GCC 下我们使用 GCC INLINE m128i GCC INLINE ATTRIB MM SHA256RNDS2 EPU32 m128i a const m128i
  • Java中使用幂法计算n次方根

    我试图在java中使用得到立方根Math pow n 1 0 3 但因为它除以双精度数 所以它不会返回确切的答案 例如 对于 125 结果为 4 9999999999 有解决方法吗 我知道有一个立方根函数 但我想解决这个问题 以便我可以计算