如何获得最大的大十进制值
2022-08-31 22:26:57
如何获得 BigDecimal 变量可以容纳的最大可能值?(最好是编程方式,但硬编码也可以)
编辑
OK,只是意识到没有这样的事情,因为BigDecimal是任意精度。所以我最终得到了这个,这对我的目的来说已经足够大了:BigDecimal my = BigDecimal.valueOf(Double.MAX_VALUE)
如何获得 BigDecimal 变量可以容纳的最大可能值?(最好是编程方式,但硬编码也可以)
编辑
OK,只是意识到没有这样的事情,因为BigDecimal是任意精度。所以我最终得到了这个,这对我的目的来说已经足够大了:BigDecimal my = BigDecimal.valueOf(Double.MAX_VALUE)
它是一个任意精度类,它将随心所欲地变大,直到您的计算机内存耗尽。
查看源BigDecimal将其存储为具有基数的BigInteger,
private BigInteger intVal;
private int scale;
和来自 BigInteger
/** All integers are stored in 2's-complement form.
63: * If words == null, the ival is the value of this BigInteger.
64: * Otherwise, the first ival elements of words make the value
65: * of this BigInteger, stored in little-endian order, 2's-complement form. */
66: private transient int ival;
67: private transient int[] words;
所以最大的大十进制是,
ival = Integer.MAX_VALUE;
words = new int[Integer.MAX_VALUE];
scale = 0;
你可以弄清楚如何设置它。:P
[编辑]所以只是为了计算,在二进制中,
(2^35)-2 1's (我想?
在 2 的补码中
01111111111111111...直到你的RAM填满。