为什么我们对浮点数据类型使用`f`而不是字节和短?

时间:2014-09-14 09:04:23

标签: java types

如果我们在Java中使用float数据类型,我们必须在浮点文字的末尾添加f,因为Java假定它是double数据类型,并且为什么不给出错误对shortbyte执行相同操作,因为两者的范围都小于int

1 个答案:

答案 0 :(得分:4)

例如,因为byte始终可以被视为byte,因此您无法使用double。它总是一个字节。但实数只能表示为近似值。 floatdouble之间的区别在于float使用64位和int 32。漂浮是一种较少的优点。

对于整数,longint类似。整数的默认类型是double。同样,实数的默认类型是float

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

基本上,当你执行此操作0.1时,你隐式地将float x = (float) 0.1字面值转换为浮点数。
该陈述等于float x = 0.1f; double y = 0.1;

现在让我们尝试一下:

System.out.println(x == y)

false会给你0.1f --> 1000000014901161200 0.1 --> 1000000000000000055 。为什么?让我们看看小数点后面的前20位数字:

{{1}}

我希望这会有所帮助。