c - 在 C 中显示 float

标签 c file loops structure scanf

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

这很完美,但是,该函数将计算值提供给最接近的整数:

#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();
    }

这是一行代码,假设这是一个 do-while 循环,直到文件结束。

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

编辑:我的编码技能是 RIP 编辑 2:错误,假设整数/整数会自动计算浮点值。我已经相应地更改了代码,它有效。谢谢你们。

最佳答案

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

试试这个

CalScS = CalScD/(double)CalScT;

先将分母转为 float ,再进行除法赋值。

哦......而且(几乎)总是喜欢 double 而不是 float

关于c - 在 C 中显示 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27525024/

相关文章:

Python:循环/理解/映射中对象创建的时间与一次性

C# backgroundworker 循环更改标签文本

c - 如果我已经为字符串 b 赋值,则无法将字符串 a 复制到字符串 b

c - InterlockedBitTestAndReset64() 未定义

JavaScript : open files with the value of select

android - 将多个 XML 文件合并为一个文件效率更高吗?

c - 学习所需的环境设置 "*Computer Systems:A Programmer' s Perspective*"

你能在另一个文件中 extern #define 变量吗?

javascript - 如何从 blob url (URL.createObjectURL()) 创建 pdf 文件对象

javascript - 循环后的额外输出