C中的变量浮点除法

float division by variable in C

我正在计算工资 inflation 通过随机的 1 到 5% 的工资增长。 对于考试,2020 年 inflation 增加了 2%。我的工资是1000。 那么答案应该是 1000 * 1.02 = 1020.

所以我做了一个简单的代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {


    srand((unsigned int)time(NULL));
    int inc_rate = (rand() % 5) + 1;
    float num = (100 + inc_rate) / 100;

    printf("%d  \n", inc_rate);
    printf("%f", 100 * (float)num);

    return 0;
}

但是如果我运行它不能算1.02.

例如结果

2
100.000000

如何计算除以 C

如果两个操作数都是整数(舍去小数部分),则运算符“/”执行整数除法。这意味着表达式

(100 + inc_rate) / 100
如果 inc_rate 是 1 到 5 之间的整数,

将始终为 1。

试试这个:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) 
{
    srand(time(NULL));
    int inc_rate = (rand() % 5) + 1;
    float num = (100.0 + inc_rate) / 100.0;

    printf("%d\n", inc_rate);
    printf("%f\n", 100.0 * num);

    return 0;
}