【问题标题】:How to divide integers and get a float in C如何在C中除以整数并获得浮点数
【发布时间】:2020-07-06 18:05:31
【问题描述】:

我正在通过获取单词、句子和字母的数量来构建段落难度标注器……我正在尝试除以整数并获得浮点数 for example ((letter_counter / word_counter) * 100); Dividing (80 / 21) * 100 正在返回400 而不是 380.9523,我做错了什么?感谢一些帮助!这是我的代码示例! letter_counter, word_counter, sentence_counter = int


    // Putting all together
    float L = ((letter_counter / word_counter) * 100);
    printf("The L value = %f\n", L);

    float S = ((float) sentence_counter / word_counter) * 100;
    printf("The S value = %f\n", S);

    int index = round(0.0588 * L - 0.296 * S - 15.8);
    printf("Grade %i\n", index);

    if (index < 1)
    {
        printf("Before Grade 1\n");
    }
    else if (index >= 16)
    {
        printf("Grade 16+\n");
    }
    else
    {
        printf("Grade %i\n", index);
    }

【问题讨论】:

  • 但是为什么在计算S时将sentence_counter转换为(float)
  • 整数除法产生整数结果 - 要获得浮点结果,至少有一个操作数必须是浮点类型。

标签: c int double division


【解决方案1】:

您必须将其中一个ints 转换为float。例如:

float L = (((float)letter_counter / word_counter) * 100);

【讨论】:

  • letter_counterword_counter的值是多少?
【解决方案2】:

您可以使用100.00 而不是100 来告诉编译器将表达式计算为浮点表达式,如下所示:

int num1 = 80;
int num2 = 21;
float L = (num1 * 100.00) / num2; // 100 -> 100.00

结果:

380.952393

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多