C语言输入输出double值得处理
今天又做到一道题,在scanf()和printf()时对double的处理再度纠结。
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy9627')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy9627> double a, b;
printf("Please input two numbers(use space to divide): ");
scanf("%lf%lf", &a, &b);
printf("1/(1/a 1/b)/2= %fn", harmmean(a, b));
return 0;
很明显的纠结于
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy6077')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy6077>scanf("%lf%lf", &a, &b);
scanf()时我们用了%lf,而printf()时我们却用了%f,对此做出的解释是:
首先,www.111cn.net 一般情况下float和double所占的位数是不一样的……至少在我的电脑上int和float是4位,而double是8位。所以为了区分,在输入时需要明确的分为%f和%lf来确定你是要使用4位内存还是8位,而在printf()时,float会被转换为double,因此不用区分,直接使用%f就行了,至于%lf似乎就不存在了,存在的是%Lf,用于输入输出Long Double
C 总结一下 类型与格式说明符对应表
int %d
double/float %f
long %ld
long long %lld
char %c
short %hd
unsigned int %d
unsigned short %hu
八进制short %ho
unsigned long %lu
long double %Lf
十六进制long double %la (最后p10 表示2^10 p 表示2的指数)
指数计数法 %e (E10 表示10^10)
八进制 %0
十六进制 %x
前面加#如%#0则会输出如0111 %#x 如 0x2f
您可能感兴趣的文章:
C语言输入输出double值得处理
分享阿里巴巴综合算法面试题详解
c语言学习的简要笔记
php入门教程-php变量
关于PHP浮点数你应该知道的事情
一个C/C 浮点数跨平台产生的问题及解决办法
java中将字符串(String)转换为整型
C# 函数与函数重载
python c 和java的区别有哪些
go run main.go 参数_Go语言入门:Hello world