簡體   English   中英

Java:public static final double不能設置為小數?

[英]Java: public static final double can't be set to decimal fraction?

我有一個配置文件,其中包含我想用於計算的一些因素。

public class Config {

  public static final double factor = 67/300; // ~0,2233...

}

我訪問這樣的因素:

public class Calculate {

  public static calc() {
    ...
    result *= Config.factor;
    ...

當我這樣做時,Config.factor等於0,所以我的結果也是0。 如果我將因子設置為0.2233,我沒有那個問題,但那不會那么准確。 為什么不將它設置為67/300工作?

嘗試這個:

public static final double factor = 67/300d;

問題是67300是整數文字,因此除法最終是一個整數,即0。數字末尾的d使它成為雙字面,因此67/300d的結果是double 67/300d

請注意,在前面的代碼中,雙字面值是300d 您也可以使用67d/30067d/300d

它應該如下所示:

 public static final double factor = 67d/300d;

如果你不附加'd',它將被視為整數,這就是你獲得ZERO的原因。

int將是deafault選擇。 按照文檔

對於整數值,此數據類型通常是默認選擇,除非有理由(如上所述)選擇其他內容

輸入67/300時,編譯器會將這些視為int而不是double 因此,當發生除法時,結果將被置於0。

為了避免這種情況,施放編號,以double通過添加或者d每個數后(如在其他的答案所描述的)或全型鑄造帶(double)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM