如何获得最大的大十进制值

2022-08-31 22:26:57

如何获得 BigDecimal 变量可以容纳的最大可能值?(最好是编程方式,但硬编码也可以)

编辑
OK,只是意识到没有这样的事情,因为BigDecimal是任意精度。所以我最终得到了这个,这对我的目的来说已经足够大了:
BigDecimal my = BigDecimal.valueOf(Double.MAX_VALUE)


答案 1

它是一个任意精度类,它将随心所欲地变大,直到您的计算机内存耗尽。


答案 2

查看源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填满。