使用';d';在Java中定义双文本时?

使用';d';在Java中定义双文本时?,java,double,literals,Java,Double,Literals,嗨,如果我想定义我写的双字面值: (1) double a = 12.0; 但是当我定义double时,比如在小数点后没有任何东西 (2) double b=12; 使用它更容易接受吗 (3) double c=12d; 相反 据我所知,(1)是最好的方法,如果我能问你下一个更好的方法是什么来声明双文本,这将是你的选择,为什么?。我最多使用选项2,但如果我想强制执行计算结果,则使用选项3 int intval = ... double intdev = 1 / intval;

嗨,如果我想定义我写的双字面值:

(1) double a = 12.0;
但是当我定义double时,比如在小数点后没有任何东西

(2) double b=12;
使用它更容易接受吗

(3) double c=12d;
相反


据我所知,(1)是最好的方法,如果我能问你下一个更好的方法是什么来声明双文本,这将是你的选择,为什么?

。我最多使用选项2,但如果我想强制执行计算结果,则使用选项3

   int intval = ...
   double intdev = 1 / intval;
   double doubledev = 1d / intval; 

根据Java语言规范:

如果浮点文字以字母F或F结尾,则它的类型为float;否则它的类型是double,并且可以选择以字母D或D结尾

浮点类型(float和double)也可以表示 使用E或E(用于科学记数法)、F或F(32位浮点文字) 和D或D(64位双字面值;这是默认值,按惯例省略)


因此,添加
D
D
与您已经知道的省略是一样的,但我想说的是,最好遵循惯例,省略它。

这其实并不重要。没有任何区别
默认类型为
double
。因此,除非您放置一个
f
(如果您想将该值视为浮点数),否则默认情况下该值将被视为double。
这与整数相同。默认类型为
int
。如果你想要一个
长的
,你必须添加一个
l
,否则一切都是
int

1和3都比2好,因为它们意味着在查看时数字是双倍的。你也可以把它硬涂成两倍,但有时会变成很多括号。@qix:这似乎既冗长又不必要。这是一个品味和观点的问题。当编译这些文字时,这些文字可能都会转换成双重含义。你的问题不仅是征求意见,而且是模棱两可的。您讨论了双文本,但在示例2中没有双文本。你混淆了术语。(2)不是
double
文字,而是编译时转换为
double
int
文字。请注意,除了在临时自定义测试中,我实际上不使用魔法值。+1用于引用规范。对于未来的答案,反勾号用于内联代码;代码块使用4个空格(因为它支持语法突出显示)。虽然我个人不同意你的观点,但规格从不撒谎不过,有一种不同的方式。2号不是从双人开始的。
double d1 = 123.4;
// same value as d1, but in scientific notation
double d2 = 1.234e2;
float f1  = 123.4f;