如果我们在Java中使用float
数据类型,我们必须在浮点文字的末尾添加f
,因为Java假定它是double
数据类型,并且为什么不给出错误对short
和byte
执行相同操作,因为两者的范围都小于int
。
答案 0 :(得分:4)
例如,因为byte
始终可以被视为byte
,因此您无法使用double
。它总是一个字节。但实数只能表示为近似值。 float
和double
之间的区别在于float
使用64位和int
32。漂浮是一种较少的优点。
对于整数,long
和int
类似。整数的默认类型是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}}
我希望这会有所帮助。