[英]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;
問題是67
和300
是整數文字,因此除法最終是一個整數,即0。數字末尾的d
使它成為雙字面,因此67/300d
的結果是double
67/300d
。
請注意,在前面的代碼中,雙字面值是300d
。 您也可以使用67d/300
或67d/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.