我有一些双重数字,我需要应用'|',但我收到如下编译错误。
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
我想知道是否有办法申请'|'加倍数并获得结果。
感谢。
答案 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>