如何在C中使用十进制值递增for循环

use*_*764 3 c loops for-loop increment

我有这个代码

for (k=0; k<BUFFER_LEN; k++){                

           buffer[k] = sin(2*pi*f/fs*k);          //sine generation
Run Code Online (Sandbox Code Playgroud)

我的循环每次递增1 - 因此每次计算时k将为1,2,3,4,5 ......等

我想循环每次增加0.1,所以我的正弦计算更准确?实现这一目标的最简单方法是什么?我尝试在for循环中递增0.1,但不要认为这是允许的,因为程序超时

编辑:这是一个解决方案

int i, k;
float z=0.1;

for(i = 0; i < BUFFER_LEN; i++){                         // fill the buffer
       buffer[k] = sin(2*pi*f/fs*z);                     // sine wave value generation
       z = z + 0.1;
       }
Run Code Online (Sandbox Code Playgroud)

Bra*_*eel 5

如果您想要做的只是递增.1,那么您的k值必须是浮点数.在那之后,它就像这样简单:

for(double k = 0; k < limit; k += 0.1)
Run Code Online (Sandbox Code Playgroud)

但过度使用十进制值可能会导致舍入错误,并且您的代码需要k为整数.这可能是一个更好的解决方案:

for(int k = 0; k < limit * 10; k++){
    //Now, in your equation, use k/10.0
    buffer[k] = sin(2 * pi * f / fs * (k / 10.0));
}
Run Code Online (Sandbox Code Playgroud)

确保尺寸buffer是需要的十倍!