为什么我们对 float 数据类型使用 `f` 而不是 byte 和 short?

Sou*_*a R 3 java types

如果我们float在 Java 中使用数据类型,我们必须f在浮点文字的末尾添加,因为 Java 假定它是double数据类型并给出一个错误,为什么不这样做shortbyte因为两者的范围都小于int.

qbi*_*bit 5

例如,您不能将这个东西与 a 一起使用byte,因为 abyte始终可以被同等对待。它始终是一个字节。但实数只能表示为近似值。之间的差doublefloatdouble使用64位和float32即浮动是少的Percision的。

intlong整数的和类似。整数的默认类型是int. 同样,实数的默认类型是double

现在,如果您想改用float精度。您需要以某种方式让编译器知道。这正是存在的原因f。告诉编译器如何处理这个值。

基本上,当你这样做时,float x = 0.1f你隐式地将0.1文字转换为浮点数。
这个语句等于float x = (float) 0.1

现在让我们尝试一下:

float x = 0.1f;
double y = 0.1;
Run Code Online (Sandbox Code Playgroud)

System.out.println(x == y)会给你false。为什么?让我们看看小数点后的前 20 位数字:

0.1f --> 1000000014901161200
0.1  --> 1000000000000000055
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。