初学者的问题,很多,希望有人解答,不要笑话
//2014年9月28日19:13:28关于printf输出小数位数的问题# include <stdio.h>
int main (void)
{
float a, a1, a2, a3; double a4;
float b; double b1;
float c; double c1;
float d; double d1;
float e;
a = 2.12345678; a1 = 2.12345555; a2 = 2.12344444; a3 = 2.11111155;
b = 3.1234567891234567;
c = 4.12312312312312312312312312312312312312312312312312312312312312312;
d = 5.12312312312312312312312312312312312312312312312312312312312312312;
a4 = 2.12345678;
b1 = 3.1234567891234567;
c1 = 4.12312312312312312312312312312312312312312312312312312312312312312;
d1 = 5.12312312312312312312312312312312312312312312312312312312312312312;
e = 1.2;
printf ("a = %f a1 = %f a2 = %f a3 = %f a4 = %lf\n", a, a1, a2, a3, a4);
printf ("b = %f b1 = %lf\n", b, b1);
printf ("c = %f c1 = %lf\n", c, c1);
printf ("d = %f d1 = %lf\n", d, d1);
printf ("b = %2f\n", b);
printf ("b = %.2f\n", b);
printf ("b = %5f\n", b);
printf ("b = %.5f\n", b);
printf ("e = %3f e = %f e = %d\n", e, e, e);
return 0;
}
/*------------------------------------------------------------------------
运行结果:
a = 2.123457 a1 = 2.123456 a2 = 2.123445 a3 = 2.111112 a4 = 2.123457
b = 3.123457 b1 = 3.123457
c = 4.123123 c1 = 4.123123
d = 5.123123 d1 = 5.123123
b = 3.123457
b = 3.12
b = 3.123457
b = 3.12346
e = 1.200000 e = 1.200000 e = 1073741824
Press any key to continue
----------------------------------------
总结:
通过本程序试出了很多的问题,包括了printf()函数输出控制的问题,float浮点数小数位
的,double类型小数位的问题等等,但是还有很多不明白的地方以待解决,现将问题列出;
1:定义float浮点类型数据,输出结果小数点后边是6位,这个没有问题,但是有问题的是
最后一位数的取值问题,好像是四舍五入,但是又不对,不是将小数点后第6位以后的数
全部舍去,小数点后第6位数有时候值不变,有时候会进一位,有时候不进位,不是完全
的四舍五入,可能和计算机存储数据有关,还没有弄明白。
2:分别定义float类型和double类型,并分别以%f,%lf的形式输出,但是输出结果是一样的,
float与double类型输出的小数位是不是一样的,有待进一步的学习,或者是输出控制的格试不对,
有待进一步的研究
3:控制小数点位数应该用(%.位数f),要加点“.”,有些书上是这样写的(%位数f),经过实验,位数
前不加点,是没有用的
4:输出控制比如%f,如果在%号和f之间加上内容,比如%uuuf,好像是不影响输出的,至少经过实验是这样的,
程序也不会报错,说明这样写程序认为是合法的,语法没有错误,这一点也有待于进一步的研究
5:定义float浮点类弄数据,如果以%d的形式输出,程序不会报错,但是输出的结果不对,比如上边程序中
float e;
e = 1.2;
printf ( e = %f e = %d\n", e, e, );
原本认为输出结果是
e = 1.200000 e = 1
但是结果是
e = 1.200000 e = 1073741824
会不会是溢出问题,或者是不同数据类型之间转换出现的问题,现在还不知道,有待学习
-------------------------------------------
这是目前通过这个程序想到问题,希望通过以后的学习,可以慢慢解决
---------------------------------------
2014年9月28日20:44:47
------------------------------------------------------------------*/