我希望有一个java类,它将保存一个具有任意预设精度的十进制值。类BigDecimal
看起来是一个很好的候选者作为起点,但我希望能够将小数的大小限制为最终用户决定的任何内容。从字面上讲,最终用户将在基数10中指定一个范围,我将分配足够的字节来表示该范围内的任何数字。
我在想一个扩展BigDecimal
的课程。在这个类中,我将添加模拟预设范围内的小数所需的函数。
我对社区的问题是:
有没有图书馆已经这样做了?
延长BigDecimal
是否合理?
答案 0 :(得分:3)
我建议您在提出的提案之间采用中间方式:
Apfloat
图书馆是一种很好的尝试方式,请查看API docs
Apcomplex
是一个包装类,例如一个BigDecimal
。
所以在这里,你可以有一个很大的自由来覆盖和增强刚刚应用这个类的新方法。
答案 1 :(得分:1)
有趣的是,BigDecimal已经拥有了你需要的一切。简单方法添加(BigDecimal),乘法(BigDecimal)等。工作时无限精度。
方法add(BigDecimal,MathContext),multiply(BigDecimal,MathContext)等。允许在结果尾数应该具有的位数上指定请求的上限。
所以基本上你会在结果中得到结果:
sign * mantissa * 10^exponent
保证0=< mantissa < 10^requested
。这些方法根据MathContext中指定的mode进行舍入。