这里我有一些简单的代码,用于计算距离和时间的速度。
由于我们有一个除法,因此需要浮点变量,但是,在我的程序中,它将无法正确显示。
#include <stdio.h>
#include <conio.h>
int NewDR=0;
float NewSR=0;
int NewTR=0;
int main()
{
printf("What is your new distance?");
scanf("%d",&NewDR);
printf("What is your new time?");
scanf("%d",&NewTR);
//NewSR = NewDR/NewTR;
NewSR = (float)NewDR/(float)NewTR; //-Fix is here, thanks
printf("Speed: %.2f",NewSR);
getch();
}
输入:
Distance: 20
Time: 3
预期产出:
Speed = 6.67
实际输出:
Speed = 6.00
答案 0 :(得分:3)
在NewDR/NewTR
中,由于两个操作数都是整数,因此执行整数除法,产生整数(在您的情况下,20/3 = 6),然后分配给NEWSR
。要执行浮点除法,只需将任何一个变量转换为float
,如下所示:
NewSR =(float) NewDR/NewTR;
答案 1 :(得分:1)
将NewSR = NewDR/NewTR;
更改为NewSR = ((float)NewDR)/((float)NewTR);
在算术运算之前,您需要在float
中使用其中一个操作数,否则,操作将以int
进行,最终结果将提升为float
[基于目标存储数据类型。]
答案 2 :(得分:0)
整数除以整数结果为整数。超过你需要明确地键入它。仅当您从较高层次结构使用较低层次结构(例如:来自flot-&gt; int)时,才会发生隐式转换。
因此使用NewSR = (double) NewDR/NewTR;
它会为你效劳。