在C中显示浮点的小数位数

时间:2014-11-06 11:26:00

标签: c decimal point floating divide

这里我有一些简单的代码,用于计算距离和时间的速度。

由于我们有一个除法,因此需要浮点变量,但是,在我的程序中,它将无法正确显示。

#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

3 个答案:

答案 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;

它会为你效劳。