java中存储金额用什么数据类型
java面试高频问题:你会用什么数据类型来存储金额?
如果你回答float,double的话,估计面试官会对你说:行了,回去等消息吧!
回家之后,你上网一查为什么金额不能使用float或double类型时,你才恍然大悟;
直接看下面的代码案例:
public class Test {
public static void main(String[] args) {
double a = 1;
double b = 0.9;
double c = a - b;
System.out.println(c);
}
}
运行结果是什么?如果你觉得是0.1,那你就错了;
运行结果如下:
结果居然是0.09999999999999998,因为float与double都是浮点数,浮点数参与的运算通常伴随着因为无法精确表示而进行的近似或舍入,所以导致结果会有偏差,而涉及金额的计算是绝对不允许存在偏差的。
那如何解决float与double数据类型的偏差问题呢?