首页 > 解决方案 > 将 BigInteger 夹在一个长

问题描述

有没有办法将 JavaBigInteger转换为long,将其限制在 的范围内long?我的意思是,如果它大于Long.MAX_VALUE或小于Long.MIN_VALUE,则使用这些边缘值,否则使用精确值。

标签: java

解决方案


我最终使用了这个自定义函数:

public static long clampToLong(BigInteger val) {
    if (val.bitLength() <= 63) {
        return val.longValue();
    }
    return val.signum() == 1 ? Long.MAX_VALUE : Long.MIN_VALUE;
}

推荐阅读