java如何获取最大的BigDecimal值
如何获得BigDecimal变量所能容纳的最大可能值?(最好是编程方式,但硬编码也可以)
编辑
好的,刚刚意识到没有这样的事情,因为BigDecimal是任意精度的。因此,我最终得到了一个对于我来说足够大的东西:
BigDecimal my = BigDecimal.valueOf(Double.MAX_VALUE)
你可以在下面搜索框中键入要查询的问题!
如何获得BigDecimal变量所能容纳的最大可能值?(最好是编程方式,但硬编码也可以)
编辑
好的,刚刚意识到没有这样的事情,因为BigDecimal是任意精度的。因此,我最终得到了一个对于我来说足够大的东西:
BigDecimal my = BigDecimal.valueOf(Double.MAX_VALUE)
# 1 楼答案
可以存储整数。最大值+1个整数,因为数组从零开始计数。所有这些整数都有32位,因为它们都是无符号处理的。因此,以位为单位的精度是 32*2147483648=68719476736位(=8589934592字节=8GiB=8,6GB)。 要获得小数精度,必须将位精度与log10(2)相乘,从而得到20686623783个完整的十进制数字,比字符串所能存储的数字高出4倍多。 现在你可以用这个数字量来计算10,然后减去1得到最大的BigDecimal值,但不要试图用BigDecimal本身来计算它
但现在的问题是。。。首先是什么?方法。precision(),它被限制为整数。最大值还是我的计算精度
# 2 楼答案
查看源BigDecimal将其存储为带基数的BigInteger
来自BigInteger
所以最大的十进制数是
你可以想出如何设置P
[Edit]因此,只需计算一下, 在二进制中
(2^35)-21(我想是吧?)
在2的补语中
011111111111。。。直到你的公羊吃饱为止
# 3 楼答案
这是一个任意精度的类,在你的计算机内存耗尽之前,它会变得任意大
# 4 楼答案
您可以表示2^2147483647-1,但在此值之后,某些方法无法按预期工作。它有6456993个数字
印刷品
然而
印刷品
因为位的数量出现了溢出
大十进制。MAX_值足够大,您不需要检查它
# 5 楼答案
如果有足够的RAM,该值约为:
2240*10232
(这个数字肯定相差几个数量级,但相对而言,这是一个非常精确的估计。)