浮点型的打印和有效值位数问题

/*
1、printf %f 默认输出6-7个小数位数

2、float 有效位6,超过6位的不保证显示正确(有可能正确有可能错误),double有效位15,超过15位不保证显示正确

3、可以指定输出格式

4、输出指定%f,%lf没什么影响

*/

#include <stdio.h>
#include <stdlib.h>

void main()
{
  float a = 3.1415926f;    //输出6个小数位数
  printf("a=%f\n",a);      //a=3.141593

 double b = 1.2345678;    //输出6位小数
 printf("b=%f\n",b);      //b=1.234568 

 float c = 3001110001.12345678f;//同上
 printf("c=%f\n",c); //c=3001110000.000000,只保留了前6个数字正确
 
 double d = 3001.0123456789;
 printf("d=%15.10f\n",d);//d=3001.0123456789 输出15位,其中小数点10位
 
 float e = 1.123456789;
 printf("e=%.8f\n",e); //e=1.12345684 只保证前7位数据有效,精度不到小数8位 

}

猜你喜欢

转载自blog.csdn.net/xmzzy2012/article/details/78957269