「Java面试必会」金额处理

存储金额到底用什么数据类型?用double,float,还是BigDecimal?看似简单的一道问题,其实是面试中的高频题。如果你回答double了,那么直接可以pass了。用double到底错在哪里?下面看一个题:

double a = 0.05;
double b = 0.06;
System.out.println(b-a);

答案应该是多少呢?是不是脱口而出0.01。不是!!!
结果是:

0.009999999999999995

double和float一样都是浮点型,浮点型和小数不是一样的。
浮点数计算不是一个确定的值,金额计算出的值必须是准确的,
所以我们一般用java.math.BigDecimal

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容