我使用下面的代码来计算log base 2。
Math.log(x)/Math.log(2);
用这个函数,如果x=4/5,我得到nan。
用calc,excel这个问题不存在。
如何避免得到nan并获得真正的价值?
我有一种强烈的感觉,您的4/5
是整数。这意味着4/5
将由于整数除法而评估为0
。
log(0)
是负无穷大,这可能是你的NaN
的来源。
要解决此问题,请在进行除法之前将数字强制转换为浮点:
double x = (double)4 / 5;
我怀疑您的问题是因为4 / 5
是0
,因为它使用整数算术进行除法。如果您想使用浮点运算来获得0.8
,那么您应该尝试4.0 / 5
。