C语言输入小数,精确到小数点后10位

我用scanf("%f",&x)接收数据,如x=0.0000002,最后接收到的数据只能精确到小数点后六位,我想接收接进0而又比较小的数,如这数能精确到小数到后10位
直接一点
#include<stdio.h>
void main()
{
double x;
scanf("%15.10f",&x);
printf("\n%15.10f",x);
}
当我输入0.0000002的时候,输出的结果就不是我要的结果,我要的就是输出0.0000002;
或者换一个问法,有没有办法,用scanf接收10的负7次方啊,三位大侠都没答到点上啊

把scanf("%15.10f",&x);应该改成scanf("%15lf",&x);这样就好了。

代码中x是double型的,在输入数据的时候是不允许使用%f的,double型的数据输入必须使用%lf

还有,scanf("%15.10f",&x);15.10这个是不允许出现的,在数据输入的时候只能指定输入数据的总长度,不能指定小数点后的长度。

扩展资料:

scanf(函数原型

int scanf(const char * restrict format,...);

函数 scanf() 是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。

参考资料来源:百度百科-scanf (计算机语言函数)

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-23
哥们,你这程序有问题

x是double型的,在输入数据的时候是不允许使用“%f”的,double型的数据输入必须使用“%lf”

还有,“scanf("%15.10f",&x);”15.10这个是不允许出现的,在数据输入的时候只能指定输入数据的总长度,不能指定小数点后的长度,

你把“scanf("%15.10f",&x);”应该改成“scanf("%15lf",&x);”这样应该就好了本回答被提问者采纳
第2个回答  2010-04-24
void main()
{ double x;
scanf("%15lf",&x); //改为15lf其中l是小写的L,表示可以接收总共15位数
printf("\n%.10lf",x); //输出带10位小数,注意10前面有个小数点,l是小写字母L。

system("pause");

}

输入10位小数0.0000000002
输出0.0000000002 //注意:如果输入的数大于10位小数,则会输出一串0
第3个回答  2010-04-24
最简单的方法:把代码改成我这样的:
#include<stdio.h>
int main()
{
long double x;
scanf("%lf",&x);
printf("\n%.10lf",x);
system("PAUSE");
}
这样可以达到10的负10次方。
第4个回答  2010-04-23
double型数据

然后输出格式为
printf("%20.10f",i);

%f是浮点型float的输出方式,在%f之间的“20.10”表示要求输出20位有效数字,其中10位是小数(多了四舍五入,不够的添0)