BigDecimal(Java)的内存消耗

时间:2013-10-13 13:13:42

标签: java floating-point double bigdecimal

我正在考虑编写一个小的java类来处理小数。基本思路是有两个int字段,一个用于保存小数点左边的值,另一个用于保存小数点右边的值。例如,以下号码:

100.50

100将在第一个int中,50个将在第二个。

这是值得做的,还是BigDecimal在实现中已经做了类似的事情?

1 个答案:

答案 0 :(得分:4)

一个好的规则是(从J. Bloch,Effective Java,2nd Ed。转述):

“永远不要重新发明轮子。如果有一个Java API类可以用来做你想做的事情,那就用它而不是试图重写你自己的类。语言开发人员多年来一直在努力改进和优化库通常采用对独立开发人员来说不切实际的方式(并继续优化它们)。“

可能您的需求很简单。例如,也许你只是使用这个数字来识别一个对象(比如杜威十进制系统),你永远不会对它们进行数值运算。如果您的需求如此简单(您没有告诉我们您将使用这些数字做什么),那么将您自己的类编写为优化可能是明智的。

但是,如果您要对这些数字进行任何数学计算,那么使用BigDecimal来表示具有固定精度的数字量绝对是正确的方法。我甚至不担心记忆。记忆很便宜。

还要考虑BigDecimals:

  • 是不可变的
  • 是Number
  • 的子类
  • 实施Comparable接口
  • 提供算术,比例操作,舍入,比较,散列和格式转换的操作。