大家都知道,浮点数 double 在某些过程中数据会失真。
于是我想问两个问题:
1,double是否只在计算或者转换为其它类型时数据失真。
2,数据库中 decimal 若映射成java类型 double,这个过程中数据会不会失真。
其实我面临的问题是这样的,我有一个项目是SSH框架做的,但里面有许多展示价格或者金额的功能,由于我不计算只是展示它们,若转换为BigDecimal显然耗性能,我想直接转换为double,但又担心过程中数据失真,望有大神指点迷津,小弟感激不尽!
……只是展示而已 不会失真
decimal的本质其实是整数,或者说是定点数(相当于把小数点往左移动n位),所以不存在进制转换的问题,也就是你说的“失真”。double存在两个精度误差,一个是本身的精度误差,一个是进制转换的误差,这是难以避免的。