当前位置: 首页 > 知识库问答 >
问题:

在Java/Android上的BigDecimal

荣俊
2023-03-14

编辑:整个计算很复杂,有很多类似这样的操作。我需要尽可能精确的结束。

共有1个答案

孙熠彤
2023-03-14

你需要多少位数的精度?在您的示例中,您只使用了4位数字。如果这是医学和现实世界,你只能测量现实世界中的大多数东西10-13位数的准确性,而double有高达16位数的准确性。

System.out.println(Math.pow(11.11, -1.54));

印刷品

0.024524510581710988

如果您使用这本书的库http://www.apropos-logic.com/nc/,您可以获得

int runs = 10000;

long start = System.nanoTime();
double x1 = 0;
for (int i = 0; i < runs; i++)
    x1 = Math.pow(11.11, -1.54);
long time = System.nanoTime() - start;
System.out.println(x1 + " took " + time / runs / 1e3 + " us avg.");

long start2 = System.nanoTime();
BigDecimal x2 = null;
for (int i = 0; i < runs; i++)
    x2 = exp(ln(BigDecimal.valueOf(11.11), 20).multiply(BigDecimal.valueOf(-1.54)), 20);
long time2 = System.nanoTime() - start2;
System.out.println(x2 + " took " + time2 / runs / 1e3 + " us avg.");
0.024524510581710988 took 0.478 us avg.
0.02452451058171098739 took 603.769 us avg.
0.0245245105817109873886495555036930857940 took 1409 us avg.
 类似资料:
  • 概览 Android上的Chrome使用了Java代码中的一些资源(例如,Android layout和相关的字符串或图像)。这些资源依照Android的资源目录结构存储于Java根目录内, content/public/android/java/res - Java resources available within content and anything that depends on c

  • (我之前问过一个类似的问题,所以我将尝试一个更一般的形式,看看是否有人知道如何做到这一点。)有一个Java库,我在其中添加了Android支持补丁。我想自动测试代码,但为了检查它是否在Android上正常运行,我需要在Android上测试它。不过,库工件是一个jar,而不是AAR或APK,所以我不想删除旧的构建模式,到目前为止,我尝试添加Gradle Android插件时产生了一些错误,比如

  • 问题内容: 在哪里可以找到适用于Java的Java多图实现,而无需包含任何其他类等。我发现这些实现都需要其他东西,而这些东西又需要其他东西,而且很快就会变得混乱。我正在从C ++移植一个项目,并且是java的新手(这个项目也是如此,所以我在使它正常工作的同时尽量保持相同),因此任何参考或示例都很好。 问题答案: 您可以使用地图和列表来创建多图。假设您要将整数与类类型T的列表相关联。请使用以下代码:

  • 问题内容: 我在Android的OpenGL-ES 3.0中使用的工作代码如下所示: 我的问题是在第三行上将结果转换为to 。被声明为返回一个: 在我的测试平台上,该函数返回的子类,因此强制转换有效,但对于支持OpenGL-ES 3+的所有平台或Android版本进行此假设似乎并不十分安全。尽管看起来很合理,但我还没有找到任何可以保证它的文档,如果可以保证,似乎应该将该函数声明为returning

  • 我希望有人能解释一下我在尝试在Android Studio中启动刚刚从Eclipse导入的项目时遇到的以下构建错误: 错误:任务“:d执行失败。进程异常: process.gradle.internal.exec异常: 进程 '/库/Java/Java虚拟机器/jdk1.7.0_11.jdk/内容/主页/bin/java'以非零退出值 2 完成 我在OS X Yosemite 10.10上运行,并

  • 问题内容: 由于Java实现()和Android的虚拟机DalvikVM都是开源的,因此必须有可能在Google的DalvikVM之上实现Sun的JavaVM。这样就可以在android上开箱即用地运行基于JVM的应用程序和语言()。 是否正在持续努力以产生Sun JVM的这种实现? 问题答案: OpenJDK使用本机代码,因此它是一个不平凡的端口……至少有一个用Java编写的VM(JikesRV