Java面试必知必会

「Java面试必会」金额处理

2018-12-11  本文已影响196人  花生无翼

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

上一篇下一篇

猜你喜欢

热点阅读