首页 > 试题广场 >

编写一个程序,设置一个值为1.03.0的double类型变

[问答题]

编写一个程序,设置一个值为1.0/3.0的double类型变量和一个值为1.0/3.0的float类型变量。每个变量的值显示三次:一次在小数点右侧显示4个数字,一次在小数点右侧显示12个数字,另一次在小数点右侧显示16个数字。同时要让程序包括float.h文件,并显示FLT—DIG和DBL_DIG的值。1.0/3.0的显示值与这些值一致吗?

推荐
#include<stdio.h>
#include<float.h>
int main(void)
{
 double a=1.0/3.0;
 float b=1.0/3.0;
 printf("double a=1.0/3.0:\n");
 printf("%.4e\n",a);
 printf("%.12e\n",a);
 printf("%.16e\n\n",a);
 printf("float b=1.0/3.0:\n");
 printf("%.4f\n",b);
 printf("%.12f\n",b);
 printf("%.16f\n\n",b);
 printf("FLT_DIG:%d\n",FLT_DIG);
 printf("DBL_DIG:%d\n",DBL_DIG);
 return(0);
}

发表于 2018-05-05 21:32:41 回复(0)
#include<stdio.h>
#include<float.h>
int main(void)
{
 double a=1.0/3.0;
 float b=1.0/3.0;
 printf("double a=1.0/3.0:\n");
 printf("%.4e\n",a);
 printf("%.12e\n",a);
 printf("%.16e\n\n",a);
 printf("float b=1.0/3.0:\n");
 printf("%.4f\n",b);
 printf("%.12f\n",b);
 printf("%.16f\n\n",b);
 printf("FLT_DIG:%d\n",FLT_DIG);
 printf("DBL_DIG:%d\n",DBL_DIG);
 return(0);
}


算里存放浮点型数据,并不能精确表示。

这两个宏在float.h头文件下面,用来说明double、float两种数据类型有效数字的位数,注意不是小数点后面的有效位数,而是所有位数。

#define DBL_DIG         15                      /* # of decimal digits of precision */

#define FLT_DIG         6                       /* # of decimal digits of precision */

float能保证的有效位数最多是6~7位,完全能保证的是6位,double是15~16位,完全能保证的是15位。

发表于 2020-02-11 22:16:32 回复(0)