使用双打的正确表示法

时间:2009-10-17 02:21:40

标签: java coding-style double notation

在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;

由于

6 个答案:

答案 0 :(得分:4)

这不是关于风格本身。当您撰写double var = 200;时,200integer 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.20.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

更好