C Primer Plus里面的一题,求解
编写一个程序,设置一个值为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("%.4f %.12f %.16f\n", a);
printf("%.4f %.12f %.16f\n", b);
printf("FLT_DIG:%f\n", FLT_DIG);
printf("DBL_DIG:%f\n", DBL_DIG);
return 0;
}
显示结果是:
0.3333 0.000000000000 -925596166353496210000000000000000000000000000000000000000
00000.0000000000000000
0.3333 0.000000000000 -925596166353496210000000000000000000000000000000000000000
00000.0000000000000000
FLT_DIG:0.000000
DBL_DIG:0.000000
我感觉很有问题啊,求解!
[解决办法]
printf("%.4f %.12f %.16f\n", a, a, a);
printf("%.4f %.12f %.16f\n", b, b, b);
[解决办法]
printf("FLT_DIG:%d\n", FLT_DIG);
printf("DBL_DIG:%d\n", DBL_DIG);
0.3333 0.333333333333 0.3333333333333333
0.3333 0.333333343267 0.3333333432674408
FLT_DIG:6
DBL_DIG:15