在java中使用或不使用“.0”在双重操作中编写常量更具风格可接受性?
如同,
double var = 200.0; double d = var / 250.0; 双h = 1.0 - d;
VS
double var = 200; double d = var / 250; 双h = 1 - d;
由于
答案 0 :(得分:4)
这不是关于风格本身。当您撰写double var = 200;
时,200
为integer literal,然后通过widening primitive conversion转换为双倍。
具体要好得多 - 如果你使用的是双常数,请将其写为double:
double d = 200.0;
double another = .01;
double exp = 1E3;
以上所有都是floating point literals。具体在第二个例子中尤为重要:
var = 50;
double d = var / 250;
我故意省略了var
的类型。目前还不清楚d
会包含什么结果 - 它可以是0.2
或0.0
(如果var
是整数)。另一方面,如果您要撰写double d = var / 250.0
,结果将始终为0.2
。
答案 1 :(得分:2)
根据需要引导和尾随零,单精度常量标记为:
0.0
表示双倍。
0.0f
表示浮动。
答案 2 :(得分:1)
我不是Java人,而是C& C ++也有同样的问题。对我来说,我总是使用“.0”,这样我就不会被不必要的整数除法所困扰。它还使偶尔出现的关于类型转换的编译器警告变得沉默(尽管由于从整数到浮点的明确定义的类型提升语义,这些很少见。)
答案 3 :(得分:1)
大多数人在看到混合类型的算术表达式时会做“双重拍摄”,或者完全误解它。前导零也是(在较小程度上);例如在0.1
与.1
。
良好的风格就是编写代码,以便易于理解,并且易于其他人维护。因此,使用正确类型的文字,而不是依赖于促销,以及(在较小程度上)使用前导零是一种好的风格。
答案 4 :(得分:1)
正如其他人所指出的那样,这只是一个偏好和可读性的问题。请参阅以下代码和反汇编的字节码:
public class Twohundred {
public void intVersion() {
double d = 200;
}
public void dblVersion() {
double d = 200.0;
}
}
结果:
public class Twohundred extends java.lang.Object{
public void intVersion();
Code:
0: ldc2_w #2; //double 200.0d
3: dstore_1
4: return
public void dblVersion();
Code:
0: ldc2_w #2; //double 200.0d
3: dstore_1
4: return
}
正如您所看到的,这两种方法尽可能接近相同。
答案 5 :(得分:0)
使用.0
更好