当前位置:首页 » 编程语言 » c语言读取浮点数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言读取浮点数

发布时间: 2022-02-23 04:28:05

c语言 从文件中读取双精度浮点

问题很简单,只要将:fscanf(fp,"%.8f
%.8f\n",&a[2*i],&a[2*i+1]);
改为:fscanf(fp,"%lf%lf",&a[2*i],&a[2*i+1]);
注意:double双精度型数值的输入必须用%lf,而它的输出则和float单精度型数值一样用%f,%e均可。同时注意fscanf()和scanf()类似在输入数据的时候不能指定数据的精度。fscanf()可以自动判断回车,所以%.8f最后的'\n'也是多余的。而且对本题,"%lf%lf"之间加不加空格都是一样的,fscanf()遇到空格会自动判断第一个数据读入完成,接下来的就是第二个数据。当然如果是数值加字符,那么空格就必不可少要和文件中严格对应了。

Ⅱ 怎么用C语言程序读取txt文件中的浮点型数据

先按字符串读进来,然后在根据需要自行拆分组合.

Ⅲ C语言从文件读取字符串与浮点数问题

换行符也是一个字符,在ASCII里有定义,当你读取 char型时,当然会将换行符读取。

Ⅳ 读取一个单精度浮点数并输出它(保留小数点后3位)c语言

#include<stdio.h>
int main()
{
float i;
scanf("%f",&i);
i=i*10000;
i=i+5;
printf("%.3f",i/10000);
return 0;
}
如果要求四舍五入的话 就这样了 (float如果不行的话就用double) 大概就是这样了

Ⅳ C语言读取文本文件浮点数。

fscanf(xxx,"%lf",&xxx);

Ⅵ c语言,从键盘读取整数n和浮点数g的程序怎么写

从键盘读取整数n和浮点数g的程序应该这样写:
int n;
float g;
scanf("%d%f",&n,&g);

Ⅶ C语言可以直接从字符串里读取整数和浮点数嘛

注意, sscanf(), 你少写一个 s.
sscanf 里的 格式 "%d:%d:%f 告诉了: ASCII 码 到 int,int,float 的格式化转换,输入数据分隔符是分号。第一个参数 str,是输入流,来自字符串str。

#include <stdio.h>
#include <stdlib.h>

int main()
{
char *str = "10:10:20.0";
int a,b;
float c;
sscanf(str, "%d:%d:%f", &a, &b, &c);
printf("%d %d %f\n",a,b,c);
return 0;
}

Ⅷ c语言,从字符串中截取浮点数

#include <stdio.h>
main()
{
char s[]="2.39+2.39+1.22+8.9-9*7";
float a[4];
int i;
sscanf(s,"%f%f%f%f",&a[0],&a[1],&a[2],&a[3]);
for (i=0;i<4;i++) printf("%g ",a[i]);
return 0;
}
得:
2.39 2.39 1.22 8.9

Ⅸ c语言中读取一个浮点数输出对应的百分率百分率取整

如果是四舍五入,那么:

单精度数化为取整百分数,在四舍五入时,当千分位为5时不会进位。如果一定要用单精度数来四舍五入取整百分数,那么:

#include<stdio.h>
voidmain()
{
floata,k;
scanf("%f",&a);
k=a*100;
if((int)(a*100+0.5)==k+1)k+=1;
printf("%.f%%",k);
}

对于双精度数,就不存在这个问题。

#include<stdio.h>
voidmain()
{
doublea;
scanf("%lf",&a);
printf("%.f%%",a*100);
}

上面讲的是四舍五入的情况。如果不四舍五入,而是直接取整数部分,那么:

#include<stdio.h>
voidmain()
{
floata;
scanf("%f",&a);
printf("%d%%",(int)(a*100));
}

Ⅹ C语言中,请问如何从字符串中读取所有的浮点数(个数不知道),浮点数以空格隔开

用sscanf确实可以实现,代码如下:
#include <stdio.h>
int main()
{
char *str="1.0 2.0 3.0 4.0 50.0" ;
int i ;
double d ;
i=0;

while( *str == ' ' ) str++ ;
while( sscanf( str, "%lf" , &d )==1 )
{
while( *str != ' ' ) str++ ; //跳过已读过的数
i++;
printf( "d:%03d= %lf\n" , i , d );
while( *str == ' ' ) str++ ; //跳过分格符:空格
}
printf( "there is(are) %d float num(s) in str\n" , i );
return 0;
}
当然,你也可以用strtok()函数过获取数据,细节可参看相应的函数介绍