ios问题与日志计算

时间:2013-05-02 01:33:29

标签: objective-c

我正在计算自由空间损失并遇到麻烦。

进行此计算:

fslLoss = 36.6 + (20 * log(fromAntenna/5280)) + (20 * log(serviceFreq))

其中fslLoss是一个浮点数,而fromAntenna和servicefreq是整数:

NSLog(@"the freespace Loss is %0.01f", fslLoss);

结果是“自由空间损失是-inf”

问题似乎出现在20log(fromAntenna / 5280)部分,因为没有它我会得到正常的结果。

BTW ...尝试了log10,结果相同。

感谢您的帮助,

padapa

3 个答案:

答案 0 :(得分:4)

你说fromAntenna是一个整数,所以fromAntenna/5280将用整数运算来计算。这意味着它将被舍入(技术上是平铺的),可能不是你想要的。

修复:

log( (double) fromAntenna / 5280.0 )

答案 1 :(得分:4)

log(0)是-inf。对数内的整数除法可以为零。使用fromAntenna/5280.0进行浮动划分。

答案 2 :(得分:2)

编译器正确使用fromAntenna& serviceFreq as ints,当fslLoss是一个浮点数时,它没有给你很好的结果。使用一些浮动演员,你会有更好的运气:

 fslLoss = 36.6 + (20 * log((float)fromAntenna/5280)) + (20 * log((float)serviceFreq));