存储金额到底用什么数据类型?用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。
网友评论