双重,浮动和长期声明

时间:2013-02-18 14:17:21

标签: java floating-point

我想知道为什么在Java中通过执行以下操作会产生编译错误:

double d34324.34; //error
float f3342.34; //error

另一方面:

long L32423424; // works fine
double D32432424; // works fine

所以基本上我想知道为什么只有浮点值的语法使用这个限制。

我知道如果字母标识符(D,d,F,f)放在其工作的数字的末尾,但我仍然想知道为什么另一种形式不适用于浮点数。 只是好奇,我知道如果我键入3443.43434f它的工作原理。

4 个答案:

答案 0 :(得分:10)

double d34324.34

未指定34324.34的值,但会尝试使用无效名称d4324.34声明变量。

你可能想要

double myDouble = 34324.34d;
long myLong = 34324l;

答案 1 :(得分:8)

点不是标识符的有效字符(变量名,方法名,类名,参数名等)。它在Java语言规范的§3.8部分中是正确的。所以这永远不会奏效:

double d34324.34;  // error
float f3342.34;    // error

Java中的有效标识符只能包含字母,数字,“_”和“$”,并且不能以数字开头。请注意,这不包括点。

为什么要用变量命名变量?你确定你的意思不是这样的,而是吗?:

double d = 34324.34;
float  f = 3342.34f;

答案 2 :(得分:2)

这是因为它是一个无效的变量声明(语法错误) - 只能有字母,数字和下划线;并且不能以数字开头

请参阅此内容以了解valid variable names in java

  

变量名称可以包含任何字母字符或数字   下划线_。你可以给你的名字的主要限制   变量是它们不能包含任何空格。你不能   用数字开始一个变量名。

答案 3 :(得分:0)

如果Value是float还是double,则使用数字end -d和-f标识JVM。例如

0.04f(float) and 0.045d(double)

我想。是错误的根本原因。 感谢