我有这段代码:
float f;
float time;
time=samplesPerPeriod/44;
f=(1/time)*1000;
当 samplesPerPeriod 为 35 时,我在此日志中得到无限:
NSLog(@"frequency:%f Hz",f);
我不能除以一个小于 1 的数吗? 这与这是 objective-c 类中的 c 函数这一事实有关吗?
谢谢。
最佳答案
你需要为这条线使用 float
time=samplesPerPeriod/44;
所以改为做
time=(float)samplesPerPeriod/44.0;
如果 samplesPerPeriod
是一个 int
,则除法将是整数除法。这意味着你真的在做
35/40
作为 int
,它是 0
,然后 转换为 float
值 0.0
。因此,您需要在除法之前将 samplesPerPeriod
转换为 float ,并且为了安全和清晰起见,请使用 44.0
的 float
值也是分母。
关于objective-c - 除以小于 1 的 float 时无穷大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762165/