Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C语言显示浮点_C_File_Loops_Structure_Scanf - Fatal编程技术网

用C语言显示浮点

用C语言显示浮点,c,file,loops,structure,scanf,C,File,Loops,Structure,Scanf,好的,我有两个文件(距离和时间),它们的行上有不同的值,在程序中,这两个值在线划分为它们的速度,并显示在屏幕上 这非常有效,但是,该函数将计算值与最接近的整数进行比较: #include <stdio.h> int main() { FILE *fTotDc; FILE *fTotTc; int CalScD; //Values for total cycling speed int CalScT; float CalScS; char ScSValue[32]; int

好的,我有两个文件(距离和时间),它们的行上有不同的值,在程序中,这两个值在线划分为它们的速度,并显示在屏幕上

这非常有效,但是,该函数将计算值与最接近的整数进行比较:

#include <stdio.h>


int main()
{

FILE *fTotDc;
FILE *fTotTc;

int CalScD;  //Values for total cycling speed
int CalScT;
float CalScS;
char ScSValue[32];

int DataCount=1; //File line comparison

struct store06 //TICtotD
{
    char defTotDc[16];
}stock06[512];


struct store08 //TICtotT
{
 char defTotTc[16];
}stock08[512];

    fTotDc=fopen("TICtotD.txt","r"); //Opens total distance 
    fscanf(fTotDc,"%16[^\n]%*.2f", stock06[DataCount].defTotDc);
    fTotTc=fopen("TICtotT.txt","r"); //Opens total time
    fscanf(fTotTc,"%16[^\n]%*.2f", stock08[DataCount].defTotTc);

    printf("|Distance        |Time            |Speed           |");
    printf("\n");

    printf("|%-16s",   stock06[DataCount].defTotDc); 
    printf("|%-16s",   stock08[DataCount].defTotTc);

    CalScD = atoi(stock06[DataCount].defTotDc); //Totals are converted to int for calculation
    CalScT = atoi(stock08[DataCount].defTotTc);

    if(CalScT == 0) //Test for 1/0 error, There is also a failsafe in the edit function which checks for t=0;
    {
                  if(CalScD == 0) //If distance is 0 (As it is by default), the speed is 0.
                  {       
                        printf("|0               ");
                  }
                  else  //If distance is not 0 , we have (1/0)*k, which doesn't exist.
                  {   
                        printf("|Error, Time is 0");//Error message given.
                  }
        }
        else
        {
             CalScS = CalScD/CalScT; 
             snprintf(ScSValue,32,"%.2f", CalScS); //Turns this int value into a string
             printf("|%-16s",ScSValue); //String outputted
        }

        printf("|"); //last column
        getch();
    }
#包括
int main()
{
文件*fTotDc;
文件*fTotTc;
int CalScD;//总循环速度的值
int CalScT;
漂浮钙;
字符SCS值[32];
int DataCount=1;//文件行比较
struct store06//TICtotD
{
char defTotDc[16];
}stock06[512];
struct store08//TICtotT
{
char defTotTc[16];
}stock08[512];
fTotDc=fopen(“TICtotD.txt”,“r”);//打开总距离
fscanf(fTotDc,“%16[^\n]%*.2f”,stock06[DataCount].defTotDc);
fTotTc=fopen(“TICtotT.txt”,“r”);//打开总时间
fscanf(fTotTc,“%16[^\n]%*.2f”,stock08[DataCount].defTotTc);
printf(“|距离|时间|速度|”);
printf(“\n”);
printf(“|%-16s”,stock06[DataCount].defTotDc);
printf(“|%-16s”,stock08[DataCount].deftotc);
CalScD=atoi(stock06[DataCount].defTotDc);//总计转换为int进行计算
CalScT=atoi(stock08[DataCount].deftotc);
如果(CalScT==0)//测试1/0错误,则编辑函数中还有一个故障保护,用于检查t=0;
{
if(CalScD==0)//如果距离为0(默认情况下),则速度为0。
{       
printf(“0”);
}
else//如果距离不是0,我们有(1/0)*k,这是不存在的。
{   
printf(“|错误,时间为0”);//给出了错误消息。
}
}
其他的
{
CalScS=CalScD/CalScT;
snprintf(ScSValue,32,“%.2f”,CalScS);//将此int值转换为字符串
printf(“|%-16s”,ScSValue);//输出的字符串
}
printf(“|”);//最后一列
getch();
}
这是一行的代码,假设它在do while循环中一直运行到文件末尾

输入(距离文件):第1行:4,(时间文件)第1行:1。 预期速度输出:0.25 实际产量:0.00

编辑:我的编码技巧很好
编辑2:错误,假设整数/整数将自动计算浮点值。我已经相应地更改了代码,它可以正常工作。谢谢大家。

CalScS=CalScD/CalScT
首先执行整数除法,然后将结果值转换为float并分配给变量

试试这个

CalScS = CalScD/(double)CalScT;
首先将分母转换为浮点,然后进行除法并正确赋值


哦。。。而且(几乎)总是在
CalScS=CalScD/CalScT中选择
double
而不是
float
首先执行整数除法,然后将结果值转换为float并分配给变量

试试这个

CalScS = CalScD/(double)CalScT;
首先将分母转换为浮点,然后进行除法并正确赋值

哦。。。而且(几乎)在您的代码中,总是更喜欢
double
而不是
float

int CalScD;  //Values for total cycling speed
int CalScT;
两者都是
int
类型,
CalScS
float
类型

在使用

CalScS = CalScD/CalScT;
首先,除法将作为整数除法执行[产生
int
值],然后,
int
结果将提升为浮点。这就是为什么要得到
整数
输出

改变

CalScS = CalScD/CalScT;

在代码中强制执行浮点除法。

int CalScD;  //Values for total cycling speed
int CalScT;
两者都是
int
类型,
CalScS
float
类型

在使用

CalScS = CalScD/CalScT;
首先,除法将作为整数除法执行[产生
int
值],然后,
int
结果将提升为浮点。这就是为什么要得到
整数
输出

改变

CalScS = CalScD/CalScT;


执行浮点除法。

您的计算行
CalScS=CalScD/CalScT正在进行整数除法,因为两个操作数都是整数


您需要一个(或两个)操作数为
float
s(或
double
s)才能进行浮点除法。

您的计算行
CalScS=CalScD/CalScT正在进行整数除法,因为两个操作数都是整数


需要一个(或两个)操作数为
float
s(或
double
s)才能进行浮点除法。

atoi返回一个整数。除法int/int给出一个整数。你可以将第一个乘以1.0,将其转换为浮点。返回值将是浮点。我建议使用
double
而不是
float
@ShaZiv“将第一个乘以1.0,将其转换为浮点”更好地表述为“将第一个乘以1.0,将其转换为双精度”. 要获得
浮点值
请使用
1.0f
。atoi返回一个整数。除法int/int给出一个整数。你可以将第一个乘以1.0,将其转换为浮点。返回值将是浮点。我建议使用
double
而不是
float
@ShaZiv“将第一个乘以1.0,将其转换为浮点”更好地表述为“将第一个乘以1.0,将其转换为双精度”. 要获得
浮点值
请使用
1.0f
@CoolGuy aah..抱歉。我从上面的答案中复制了代码。修正了。@CoolGuy啊..对不起。我从上面的答案中复制了代码。固定的