我需要用Java精确地表示一些数字,并在小数点后固定小数点的数量;小数点后,我不在乎。(更具体地说-金钱和百分比。)
我现在使用Java自己的BigDecimal,但发现它确实很慢,并且开始在我的应用程序中显示。
因此,我想用“规则”整数和定点算术(长整数具有足够大的精度满足我的目的)来解决它。
现在,我想我不是第一个遇到这种问题的人,并且已经有一个针对该问题的库,该库已经实现了乘法/除法-但似乎并非如此。
现在,我很可能可以自己写(也许我会写),但是,实际上,我真的是第一个需要它的人吗?还没有图书馆吗?
您是否完全确定 BigDecimal 是性能问题?你用分析器找出来了吗?如果是,有两个可能有帮助的选项是:
1) 使用long所有值并将其乘以一个因子(例如,如果您对美分感兴趣,则为 100)。
2) 使用一个专门设计的类,它实现了类似于 的东西BigDecimal,但在long内部使用。我不知道是否存在一个好的开源库(也许是Java Math Fixed Point Library?)。我很久以前(我相信是 2001 年)为 J2ME 自己写了一个这样的类。做对有点棘手。请注意,除非需要高精度,否则在内部也BigDecimal使用 a long,因此该解决方案在大多数情况下只会有一点帮助。
double由于舍入和精度问题,在许多情况下使用不是一个好的选择。
| 归档时间: |
|
| 查看次数: |
12542 次 |
| 最近记录: |