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