我用來初始化雙變量爲Double.NaN
,稍後根據輸入進行填充。如果輸入錯誤,我只能返回Double.NaN
。這種做法反其道而行之時,當其他部分的應用程序使用我的功能作爲輸入和工作就好了,做基本算術和比較NaNs
與雙(但不應該,我希望例外)。在java中初始化雙變量的最安全的方法
明顯的解決辦法是在我的代碼的末尾添加Double.isNaN()
並把我的功能 內異常但這是在高度優化的代碼使用頻率高的功能,所以我不願意增加額外的每個是時間檢查調用。我寧願每年一次在錯誤的參數上打破整個應用程序,而不是添加額外的檢查,尤其是,我聽說與NaN
相比需要的時間比雙倍。我如何實現這一目標?在這種情況下,最佳實踐是什麼?
編輯 例如,我要返回參數函數的第一個參數,我一無所知根據用戶輸入
private double getFirstFactor(HashMap <String, Double> userParams) {
double res = Double.NaN;
if(userParams.containsKey("factor1")) {
res = userParams.get("factor1");
}
return res;
}
使用
double f1 = getFirstFactor(userParams);
double threshold = f(f1); // for example f1 * 100 + f1;
// ideally, code above breaks if f1 is not defined and I don't go futher
if(threshold >= 0) {
...
} else {
...
}
聽起來好像你的設計中有一些非常錯誤的東西。你需要顯示你的代碼,以及你如何初始化和使用變量,如果你想要任何建議。 – Kayaman
使用''null''作爲Double的默認值有什麼問題?爲什麼是'NaN'' ?! – f1sh
@ f1sh不是'雙','雙'。 – Kayaman