对数以2为底和NaN

3
我使用下面的代码来计算以2为底的对数。
Math.log(x)/Math.log(2);

使用这个函数,当x=4/5时,会得到nan。

但是在calc和excel中,这个问题不存在。

如何避免得到nan并获得真实值?

2个回答

8
我有强烈的感觉你的4/5是整数。这意味着由于整数除法,4/5将评估为0log(0)是负无穷大,这可能是你的NaN的来源。
要解决这个问题,在进行除法之前,将数字转换为浮点数:
double x = (double)4 / 5;

6

我怀疑你的问题是因为 4 / 5 等于 0,这是因为它使用整数算术进行除法运算。如果想要使用浮点数算术获得 0.8,那么应该尝试使用 4.0 / 5


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接