我正在测试一些涉及a的代码的边界条件BigDecimal,我注意到当BigDecimal使用String初始化a时,"1e2147483647"它会出现意外行为.它似乎在0和之间有一个值1e-2147483647.当我试着打电话时intValue(),我得到一个NegativeArraySizeException.我应该注意,这2147483647是我系统上整数的最大值.我做错了什么,或者这是一个问题BigDecimal?
BigDecimal test = new BigDecimal("1e2147483647");
test.compareTo(new BigDecimal(0)); //Returns 1
test.compareTo(new BigDecimal("1e-2147483647")); //Returns -1
test.intValue(); //Throws NegativeArraySizeException
Run Code Online (Sandbox Code Playgroud) 可能重复:
BigInteger没有限制意味着什么?
Javadoc for BigInteger没有定义任何最大值或最小值.但它确实说:
(重点补充)
不可变的任意精度整数
甚至在理论上是否存在这样的最大值?或者BigInteger操作方式是否根本不同,除了计算机上可用的内存量之外,实际上没有最大值?
我查看了与Big Integer有关的stackoverflow问题,特别是我不理解这一行(斜体字):
在BigInteger类中,我没有限制,并且有一些有用的函数,但将你漂亮的代码转换为使用BigInteger类非常令人沮丧,特别是当原始操作符不能在那里工作时你必须使用这个类中的函数.
我不知道我错过了什么,但代表一些没有限制的东西,你需要无限的记忆?这是什么诀窍?
有人可以解释一下 Cassandra 中 INT 和 VARINT 数据类型之间的区别吗?什么时候应该使用 VARINT,它的优点是什么?