Предполагается, что samplesPerPeriod
имеет целочисленный тип
float time;
time = samplesPerPeriod / 44;
тогда оба операнда оператора / имеют целочисленный тип и выполняется целочисленное деление.
Для выполнения деления с плавающей запятой с float
операндами.
Используйте либо:
time = samplesPerPeriod / 44.0f;
или
time = (float) samplesPerPeriod / 44;
Кроме того, ваш time
объект имеет тип float
. Используя 44.0f (литерал float
) вместо 44.0 (буквальный double
), вы гарантированно выполняете деление с операндами float
вместо double
. Это может иметь решающее значение, например, если ваш процессор может выполнять FPU одинарной точности. Использование литерала double
приведет к программной эмуляции для разделения операндов типа double
. Обратите внимание, что gcc имеет возможность предупреждать в таких случаях:
-Wdouble-promotion