有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java私有静态最终双精度为0

我正试图使用以下行指定一个双常量,有人能帮我解释一下为什么在运行时这个常量的值为0.0

private static final double CONSTANT = 1/2;

共 (2) 个答案

  1. # 1 楼答案

    1和2被解释为整数,并产生除法的整数结果。在末尾加上D,使其解释为双精度

    private static final double CONSTANT = 1D/2D;
    
  2. # 2 楼答案

    该常量的值为0.0,因为整数除法的结果是一个被截断的整数。所以初始化的值是0,而不是0.5。要强制double结果,请将一个或两个操作数设为double

    private static final double CONSTANT = 1/2.0;  // or 1/2D, or even 1D/2D