八大基本类型:
float和double类型不能表示精确的值,如货币。
float和double超过精度表示范围之后会发生精度缺失的情况。这是因为二进制存储十进制浮点数时,先将整数部分转换成二进制(整数部分除2取模,直到被除数为0),然后将小数部分转成二进制(小数部分2取整数部分,剩余小数部分继续2取整数部分,直到积为1),如果计算过程循环,则说明*2永远无法消灭小数部分。所以二进制只能精确表示2的-n次方的整数倍小数。
所以货币运算一般使用BigDecimal
为什么不使用Double或Float代表货币?
http://codingdict.com/questions/115606
Float与Double精度缺失的原因与避免
https://blog.csdn.net/qfqtzyt/article/details/102977117
货币计算请避免使用float和double
https://www.jianshu.com/p/1a6faab3cae4
除了基本数据类型,其他都是引用数据类型
原文:https://www.cnblogs.com/javaupup/p/14239867.html