试试这个.
private static final long ZERO_OUT_LAST_32_BITS = 0xffffffff00000000L;
public static void main(String[] args) {
double number = 2.5;
long numberBits = Double.doubleToLongBits(number);
double result = Double.longBitsToDouble(numberBits & ZERO_OUT_LAST_32_BITS);
}
Run Code Online (Sandbox Code Playgroud)
它通过使用二进制AND运算将双精度二进制表示的最后32位清零.
但是,请确保您确切知道自己在做什么以及为什么这样做 - 我至少会期待像这样的代码旁边的解释性评论.
转换为long并屏蔽掉所需的位,转换回来:
long l = Double.doubleToLongBits();
l &= 0xFFFFFFFF00000000L;
double truncated = Double.longBitsToDouble(l);
Run Code Online (Sandbox Code Playgroud)
虽然我不确定你想要实现什么......