浮点数精度丢失

两个浮点数加减,会出现精度丢失。

原因:计算机不能准确表示每一个浮点数的值,很多浮点数表示的是一个很接近该浮点数的值。

这里只是简略举个例子。

比如0.1这个浮点数

​ 0.1 X 2 = 0.2 0
​ 0.2 X 2 = 0.4 0
​ 0.4 X 2 = 0.8 0
​ 0.8 X 2 = 1.6 1
​ (1.6 - 1 = 0.6)
​ 0.6 X 2 = 1.2 1
​ (1.2 - 1 = 0.2)
​ 0.2 X 2 = 0.4 0
​ 0.4 X 2 = 0.8 0
​ 0.8 X 2 = 1.6 1
​ (1.6 - 1 = 0.6)
​ 0.6 X 2 = 1.2 1
​ (1.2 - 1 = 0.2)
​ 0.2 X 2 = 0.4 0
​ 0.4 X 2 = 0.8 0
​ 0.8 X 2 = 1.6 1

​ ······

​ // 无限循环下去

在idea运行一下,之所以第一个能直接输出0.1

是因为System.out.println(0.1);这句,先把浮点数转换成字符串,再输出。