我们开发的项目有可能会涉及到钱,那么钱应该用什么数据类型呢?
我们大多数人都会认为应该用double,那么是这样吗?
看下面的例子
为什么会这样呢?
因为float和double都是浮点数, 都有取值范围, 都有精度范围. 浮点数与通常使用的小数不同, 使用中, 往往难以确定。
所以说,float和double都是不能用来表示精确的类型的;
金额必须是完全精确的计算, 故不能使用double或者float, 而应该采用java.math.BigDecimal.
decimal 小数
金钱应该采用java.math.BigDecimal存储;
MYSQL数据库选择decimal类型,注意默认值 一定写成0.00, 不要用默认的NULL, 否则在进行加减排序等操作时, 会带来转换的麻烦!
下面是BigDecimal的加减乘除
大小比较用方法compareTo,两个BigDecimal值比较使用compareTo方法,比较结果有-1、0、1,分别表示小于、等于和大于,
对于0,可以使用BigDecimal.ZERO表示。