printf,sprintf函数系列的第一个参数(也就是字符串输出格式中)中要对小数进行位数限制可以用"%a.bf"的形式表示,其中a是小数点前的位数,b是小数点后的位数
例如:
printf("小数=%7.5f",12.3);
输出结果就是0000012.30000
这个不能表示出来。但printf("%07d",12)可以显示前面的那些个0
你是想输出是保留,还是在计算过程中保留?
输出保留的话printf("%.1lf",);
%m.n表示取m列,取n位小数
如果数位大于m就直接输出原样,小于m就补左空格
你的输出都大于0列就原样输出
%-m.n一样,就是一样就当小于m是就右补空格
。
所以输出一样,就是空格也看不出的
C语言中用来存储小数的doube(双精度数)是8个字节。整数部分4个字节,小数部分4个字节。
4个字节一共能够表达4294967296个数字,而小数中0到1之间有无穷个小数,所以计算机是无法表示真正精确的小数的。
我在这里补充下
C语言的小数如果是2的负整数次方就直接取值
如果不是就取近似值
%.Nf
N就是取小数点后多少位