我用来初始化双变量为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