为什么2个浮点数之间的这种简单划分不适用于java?

use*_*186 -1 java floating-point division

System.out.println((26.55f/3f));
Run Code Online (Sandbox Code Playgroud)

要么

System.out.println((float)( (float)26.55 / (float)3.0 ));
Run Code Online (Sandbox Code Playgroud)

等等

返回结果8.849999.不应该8.85.

任何人都可以解释这一点,还是我们都应该避免使用花车?

Mic*_*rdt 8

每个程序员应该知道的浮点运算:

问:为什么我的数字,如0.1 + 0.2加起来不是很好的一轮0.3,而是我得到一个奇怪的结果,如0.30000000000000004?

答:因为在内部,计算机使用的格式(二进制浮点)无法准确表示0.1,0.2或0.3之类的数字.

链接到站点的深入解释