一、谜题
假设一个1.1元商品,客户给了2元,应该找零多少?在java 中:
System.out.println(2-1.1);
预想的是输出0.9,但是实际上却是0.8999999999999999
二、解惑
问题在于1.1 这个数字不能精确的表示成为一个double(二进制浮点数),因此他被表示成最接近它double值。所以输出结果不准确。
并不是所有的小数都可以用二进制浮点数来精确表示。
三、解决方案
1.有些使用场景中,可以使用int、long代替double进行计算。