首页 > 解决方案 > C程序中的浮点输出不正确

问题描述

这是我的代码

#include <stdio.h>

int main() {
   float percentage;
   int sp;
   int bp;

   percentage = (sp-bp)/bp*100;

   scanf("%d %d", &sp, &bp );
   printf("%.2f%%", percentage);

   return 0;
}

样本输入:

150 85

样本输出:

76.47%

但我的输出是:

-100.00%

有人可以帮我解决这个问题吗?

标签: c

解决方案


首先,您应该在使用它们之前真正阅读这些值:

scanf("%d %d", &sp, &bp);
percentage = ...

其次,这个:

percentage = (sp-bp)/bp*100;

进行整数除法,因此其余的除法被完全丢弃,您最终会得到:

(150 - 85) / 85 == 0
0 * 100 == 0. 

在执行操作之前,您应该将除法的一端投射到float

percentage = (sp-bp)/(float)bp * 100;

正确代码:

#include <stdio.h>

int main() {
   float percentage;
   int sp;
   int bp;

   scanf("%d %d", &sp, &bp);

   percentage = (sp-bp)/(float)bp * 100;

   printf("%.2f%%", percentage);

   return 0;
}

推荐阅读