我将在这里使用 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/