为什么浮点数333.50是双
默认浮点文字是在java中double
,如果你想要的值浮动,你可以在默认情况下对待任何小数点值作为双为此
float f = 333.5f
333.50
是文字double
类型。这只是一个规则 - 它来自1970年代的C语言。这就像0
是int
类型的文字。
等价的float
文字是333.5f
,或者您可以使用编译时可评估的常量表达式,如(float)333.50
。
事实上333.5
可以表示准确作为float
因为它是一个二进有理数。
这是你如何在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
因为... e Java规范说,默认情况下,浮点文字是一个double
值。
浮点文本
浮点字面是
float
类型的,如果它与字母F
或f
结束;否则其类型是double
并且它可以与 字母D
或d
任选结束。
而不是使用一个收缩转换(double
到float
),只需使用F
前缀在字面的声明:
float f = 333.50F;
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
区分。
的Java。所以您需要特别定义您正在使用哪种类型的原始数据类型。 例如:
`int i=10; // default
long l=123456L;
float f=123.12F;
double d=123.12345; // default
` 所以你必须明确地定义什么类型的数据类型不使用默认的类型
'333.50'是双文字时使用。一个浮点文字将是'333.50f'。基本上,double是默认值。 – khelwood
在C和C++中,*类型*取决于文字的大小,尽管是整数类型。这是一个公平的问题。 – Bathsheba