| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 432 人关注过本帖
标题:初学者的问题,很多,希望有人解答,不要笑话
只看楼主 加入收藏
yujian222000
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-8-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
初学者的问题,很多,希望有人解答,不要笑话
//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
 ------------------------------------------------------------------*/
搜索更多相关主题的帖子: include double 笑话 
2014-09-28 20:50
soulmate1023
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:256
专家分:831
注 册:2014-9-23
收藏
得分:10 
首先问题好多。。。我也是新来的,大家相互学习:
1.关于你说的那个四舍五入,对于不同的系统,处理好像不太一样,有的系统会选择向0舍入,有的会选远离0舍入;
2.对于输出一样,会不会是将FLOAT 转化成了Double 形式,所以输出一样
3.你说的对
4.这个不太懂,但我从来没有用过这样的输出格式
5.%d是用来输出int 形的,你却用来输出float,当然会出错啦
2014-09-28 22:35
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
习惯了就好了

DO IT YOURSELF !
2014-09-29 08:43
快速回复:初学者的问题,很多,希望有人解答,不要笑话
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012709 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved