java - 获得10次方的最快方法

标签 java math pow

我将在这里使用 Java 作为示例,因为它可能完全特定于语言,但我通常对执行此操作的方法感兴趣。
当然,最简单明了的方法是这样的:

Math.pow(10, x)

但据我所知,电力是一项相当昂贵的操作。因此我认为应该有更好的方法,因为它看起来很明显 - 我只需要在 1 后面加上 x 个零!

编辑:
是的,这可能是过早的优化。上下文是一个舍入到 n 位小数的操作,它经常使用这样的东西:
private final static int[] powersOf10 = {1, 10, 100, 1000, 10000};
public static double round(double number, int decimals) {
    if(decimals < 5)
        return Math.rint(number / powersOf10[decimals]) * powersOf10[decimals];
    double c = Math.pow(10, decimals);
    return Math.rint(number * c) / c;
}

这是我当前使用的舍入函数,正如您所看到的,我已经为最常用的值使用了一个查找表,但我仍然很好奇是否有一些位魔法或类似的方法来改进它。

最佳答案

最快的方法是

static final int[] POWERS_OF_10 = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};
static int powerOfTen(int pow) {
  return POWERS_OF_10[pow];
}

...因为没有更高的 10 次方适合 int .对不起,如果你期待更酷的东西。

关于java - 获得10次方的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46983772/

相关文章:

java - Math.pow(9, 18) 和 9^18 有什么区别

c++ - 为什么Webkit运行时pow()计算错误?

java - 无法使用 Joda Time 解析带时区的日期

java - 如何从 26 API 以上的后台应用程序启动 Activity ?

java - Math.pow(0.0, 0.0) 返回 1;应该是未定义的还是错误的?

java - 简单的 Java 数学

Ruby 核心 Matrix 与 NArray 的 NMatrix

java - 如何在java中给一个巨大的数字加电?

java - 如何使用 ehcache 重新加载数据?

java - 登录/使用 Api 与 Spring Security 基本身份验证不起作用