存储金额到底要用什么数据类型? 用Double,float ,还是BigDecimal?看似简单的一道题。其实是面试中的一个高频题。如果你回答double 了,那么就直接挂了,用double到底错在哪里?下面看一题。
double a = 0.05;
double b = 0.06;
System.out.println(b-a);
答案应该是多少呢? 是不是脱口而出0.01.不是 !!!!
结果是:
0.009999999999999995
double和float一样都是浮点型,浮点型和小数不是一样的。
浮点数计算不是一个确定的值,金额计算出的值必须是准确的。
所以我们一般用java.math.BigDecimal.
网友评论