为什么在这一行中浮点数被视为double?我以为浮动有足够的空间容纳这个数字。
z
答案 0 :(得分:3)
值333.50
可以在float
类型中表示,但是双字面。使用333.50F
设置浮动文字
规范见Oracle Java documentation about Primitive Data Types,明确了不同的文字:
浮点文字
如果浮点字面值以
float
或F
字母结尾,则其类型为f
;否则其类型为double
,并且可以选择以字母D
或d
结尾。
整数文字的情况类似,但此处较小的类型(int
)是默认值:
整数文字
如果整数文字以字母
long
或L
结尾,则其类型为l
;否则它是int类型。建议您使用大写字母L
,因为小写字母l
很难与数字1
区分开来。
答案 1 :(得分:2)
因为Java规范说默认情况下浮点文字是double
值。
浮点文字
浮点字面值的类型为
float
,如果它以字母F
结尾 或f
;否则它的类型是double
,它可以选择以...结尾 字母D
或d
。
不要使用缩小转换(double
到float
),而只需在文字声明中使用F
前缀:
float f = 333.50F;
答案 2 :(得分:1)
333.50
是double
类型的文字。这就是规则 - 它来自于20世纪70年代的C语言。就像0
是int
类型的文字一样。
等效的float
字面值为333.5f
,或者您可以使用编译时可评估的常量表达式,如(float)333.50
。
确实333.5
可以将完全表示为float
,因为它是一个二元理性。
答案 3 :(得分:0)
这是您在java(JLS)
中定义文字的方法int a = 12;
long b = 12L;
float c = 12.0f;
double d = 12.0d;
所以你可以写那些像;
i = 1222;
是整数文字
以同样的方式
j = 3.1415;
是双字面
当然你可以明确地定义类型:
i = 1222L; //for long values
j = 3.1415f; //for float values
答案 4 :(得分:0)
默认情况下浮点文字在java中是double
,如果你想让值浮动,你可以这样做
float f = 333.5f
答案 5 :(得分:0)
Java默认将任何小数点值视为double。所以你需要特别定义你正在使用哪种类型的原始数据类型。 例如:
`int i=10; // default
long l=123456L;
float f=123.12F;
double d=123.12345; // default
` 因此,您必须明确定义不使用默认类型时使用的数据类型