这将通过维护DecimalInt的0-9位小数数字计数值和DecimalLong的0-18位小数数字计数值以及与之匹配的缩放整数或长整数来实现。通常用于小数(例如货币和股票价格),通常为2-4个小数位。
必要的要求是(a)占用空间小(2个类,加上OverflowException),并且(b)完全支持所有基本操作和所有有意义的数学操作。
搜索结果没有明显的命中项-它们似乎都与任意小数有关。
我的问题是:这已经做过了吗?其中是否存在隐藏的微妙之处,这就是为什么它还没有被完成的原因?是否有人听说过Java支持类似DotNet的十进制类型的传言?
编辑:这与BigDecimal不同,因为它应该(a)更高效地处理不涉及int数组的情况,(b)不会包装BigInteger,因此在内存上更精简,并且(c)它将具有可变选项,因此在这方面速度会更快。总之-对于简单用例(例如“我想存储银行余额而不带BigDecimal的开销和double的不准确性”)的开销较小。
编辑:我打算使用int或long进行所有数学计算,以避免经典问题:1586.60-708.75=877.8499999999999,而不是877.85。