java - 将 BigInteger 夹在一个长
问题描述
有没有办法将 JavaBigInteger
转换为long
,将其限制在 的范围内long
?我的意思是,如果它大于Long.MAX_VALUE
或小于Long.MIN_VALUE
,则使用这些边缘值,否则使用精确值。
解决方案
我最终使用了这个自定义函数:
public static long clampToLong(BigInteger val) {
if (val.bitLength() <= 63) {
return val.longValue();
}
return val.signum() == 1 ? Long.MAX_VALUE : Long.MIN_VALUE;
}
推荐阅读
- ionic-framework - 我想在离子选择中选择离子选项后添加离子项目
- xml - 水壶(PDI)8.1读取xml错误
- scala - 在循环 DataFrame 并访问外部范围变量时获取 NullPointerException
- php - 没有这样的主机是已知的
- ibm-watson - Watson 助手中的逻辑确定对话
- c# - 带有 IsBackground 的 Lambda 线程
- python - @property 在 Python 中私有化变量
- javascript - 反应无状态组件不渲染
- compiler-construction - 安排 lex 和解析文件的程序方式是什么?
- docker - 在前端部署具有不同环境变量的 Web 服务