用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啊..对不起。我从上面的答案中复制了代码。固定的