按位" OR"的java编译错误对于双重类型

时间:2014-04-05 04:31:25

标签: java

我有一些双重数字,我需要应用'|',但我收到如下编译错误。

double x1 = -95.1274171592;
double x2 = -1518.4102607642;
double x3 = -346.63776359;

double  x = x1 | x2 | x3;  -->> The operator | is undefined for the argument type(s) doubel, double

我想知道是否有办法申请'|'加倍数并获得结果。

感谢。

3 个答案:

答案 0 :(得分:4)

如果你想对doubles进行逐位算术运算(尽管我无法想象会有什么用途),你可以使用方法{{1}将它们转换为long和从doubleToLongBits转换它们。 } {} {}和longBitsToDouble中的Double

所以你可以写

public static double bitwiseOr(double arg1, double arg2) {
    long long1 = Double.doubleToLongBits(arg1);
    long long2 = Double.doubleToLongBits(arg2);
    return Double.longBitsToDouble(long1 | long2);
}

但是,我再也看不出它有什么应用了。

答案 1 :(得分:2)

Java编程语言仅支持对整数类型的按位和位移操作。有关详细信息,请参阅doc此处

答案 2 :(得分:0)

我不确定你为什么要这样做但你可以使用Double.doubleToLongBits将你的double转换为long,按位OR然后使用Double.longBitsToDouble将结果转换回double {/ p>