实验2-6 字符型数据的输入输出

 

实验目的:

1.掌握double型浮点数与float型浮点数的区别

2.与整型数据相比,浮点型数据会出现误差,只要使用浮点型数据就一定会出现误差吗?

实验步骤:

1. 填表并分析

double型

fa

fb

fc

fd

2.3

-0.0023

2.3e5

0.00023E-2

以%f格式预期的输出为

 

 

 

 

以%e格式预期的输出为

 

 

 

 

以%E格式预期的输出为

 

 

 

 

以%f格式实际的输出为

 

 

 

 

以%e格式实际的输出为

 

 

 

 

以%E格式实际的输出为

 

 

 

 

#include <stdio.h>

void main()

{

       double fa, fb, fc, fd;

       fa = 2.3;

       fb = -0.0023;

       fc = 2.3e5;

       fd = 0.00023E-2;

       printf("%f,%e,%E\n", fa, fa, fa);

       printf("%f,%e,%E\n", fb, fb, fb);

       printf("%f,%e,%E\n", fc, fc, fc);

       printf("%f,%e,%E\n", fd, fd, fd); 

}

分析:

1)与实验2-4中的第一步相比,输出有何不同?

2)double型变量与float型变量相比有何不同?

2. 填表并编程验证

double型

fa

fb

fc

fd

2.3

-0.0023

2.3e5

0.00023E-2

以%13.2f格式输出为

 

 

 

 

以%3.0f格式输出为

 

 

 

 

以%-13.2f格式输出为

 

 

 

 

以%.15f格式输出为

 

 

 

 

分析:

1)与实验2-4中的第三步相比,输出有何不同?

2)double型变量与float型变量相比有何不同?

3. 填表并分析

变量为double型

scanf("…", &fa, &fb, &fc, &fd)

以%f格式输入

2.3 -0.0023 2.3e5 0.00023E-2

以%e格式输入

2.3 -0.0023 2.3e5 0.00023E-2

以%E格式输入

2.3 -0.0023 2.3e5 0.00023E-2

给出每次输入后每个变量以%f格式的预期输出,并通过下面程序验证。

#include <stdio.h>

void main()

{

       double fa, fb, fc, fd;

       scanf("%f%f%f%f", &fa, &fb, &fc, &fd);

       printf("%f,%f, %f,%f\n", fa, fb, fc, fd);

       scanf("%e%e%e%e", &fa, &fb, &fc, &fd);

       printf("%f,%f, %f,%f\n", fa, fb, fc, fd);

       scanf("%E%E%E%E", &fa, &fb, &fc, &fd);

       printf("%f,%f, %f,%f\n", fa, fb, fc, fd);

}

分析:

1)与实验2-4中的第二步相比,输出有何不同?可以得出一个什么结论?

切记:输出时格式字符f,e,E对double型变量和float型变量通用,但在输入时double型变量所对应的格式字符前必须加长度修饰符l。

2)除了double型变量所对应的格式字符前须加长度修饰符l之外,其与float型变量在输入时还有区别吗?

4.给出程序的输出并分析。

#include <stdio.h>

void main()

{

 

       float fb = 0.1;

    printf("%.15f\n", fb);

       printf("%.15f\n", fb+fb+fb+fb+fb+fb+fb+fb+fb+fb);

printf("%.15f\n", 1.0);  

}

分析:

变量fb加十次等于1吗?为什么?

5. 浮点型变量的误差。

5.1填表并编程验证。

float型

fa

fb

fc

fd

0.125

0.00125

0.125e-3

-0.125

用二进制的指数形式表示为

 

 

 

 

以%.18f格式的输出为

 

 

 

 

double型

fa

fb

fc

fd

0.125

0.00125

0.125e-3

-0.125

以%.18f格式的输出为

 

 

 

 

分析:

1)当变量为float型时,变量fa为何没有误差?

2)当变量为float型时,变量fb的输出是:0.001249999972060323,这与float型浮点数只能精确到小数点后的6至7位矛盾吗?

3)浮点型数据什么情况没有误差?

5.2填表并编程验证

float型

fa

125125125.125e2

用二进制的指数形式表示为

 

以%.18f格式的输出为

 

double型

fa

125125125.125e2

用二进制的指数形式表示为

 

以%.18f格式的输出为

 

分析:

浮点型数据在什么情况下没有误差?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值