在Java中的pow(x,y)函数

26

这两者有何不同:

Math.pow ( x,y ); // x^y

收件人:

x^y; // x^y

我应该使用双精度类型的数字和 x^y 运算符,还是必须始终使用 Math.pow() 方法?

4个回答

43

^是Java(以及许多其他语言)中的按位异或运算符。它不用于表示乘方。要表示乘方,您必须使用Math.pow


例如,如果我想从(x,y)计算半径,我需要使用以下代码:Math.sqrt(Math.pow(x,2)+Math.pow(y,2))。谢谢! - Master C
@Master C:如果你想将一个数提高到特定的幂次方,你需要使用 Math.pow - Michael Petrotta
1
@Master C:除了在二维空间中距离原点的概念(没有点的半径概念),我认为在这种特殊情况下,Math.sqrt(x*x+y*y) 更易读。 - Axel

12

此外,如果您想要计算2的整数次幂,那么1 << x(或者1L << x)比Math.pow(2,x)或乘法循环更快,并且保证会给您一个int(或long)结果。

它只使用了x的最低5(或6)位(即x & 31(或x & 63)),在0和31(或63)位之间进行移位。


5
在Java中,x ^ y表示进行一次异或(XOR)操作。

4

x^y不是指"xy次方"。它是指"x异或y"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接