首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

float 输出,该如何处理

2013-08-09 
float 输出问题1:main(){float a123456789e5,bba+20printf(%f\n,b)}结果怎么是12345679020052.0000

float 输出
问题1:
main()
{
  float a=123456789e5,b;
  b=a+20;
  printf("%f\n",b);
}
结果怎么是12345679020052.000000   关键是前面的79020052不懂。

问题2
本人的c语言版本是visual c++ 6.0 但是当用到整型变量数据溢出时就有如下问题了。
例:int i=50000;i=i+1;输出也是50001

求解释。。。。。


[解决办法]
1、浮点数有误差也正常;
2、VC的int类型是32位的,何来溢出之说。
[解决办法]


1 浮点型数据本来就有丢失的
  http://baike.baidu.com/view/5344607.htm 看看这个说明

2 int型 可以表示的范围很大的哦,不会这么小会溢出的
 short(int)     2字节 -32768~-32767
     int       4     -2的31次方~2的31次方-1
unsigned(int)  4     0~2的32次方-1
long(int)      4     -2的31次方~2的31次方-1

[解决办法]
引用:
主要是那个C=1000*1000,右边的表达式为1000000>32767,然后接下来就是自动截取了int中的两个字节,结果为16960.

都啥时候了,还用tc...
[解决办法]
float的有效数字位数是6

float.h
...
#define DBL_DIG         15                      /* # of decimal digits of precision */
#define DBL_EPSILON     2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
#define DBL_MANT_DIG    53                      /* # of bits in mantissa */
#define DBL_MAX         1.7976931348623158e+308 /* max value */
#define DBL_MAX_10_EXP  308                     /* max decimal exponent */


#define DBL_MAX_EXP     1024                    /* max binary exponent */
#define DBL_MIN         2.2250738585072014e-308 /* min positive value */
#define DBL_MIN_10_EXP  (-307)                  /* min decimal exponent */
#define DBL_MIN_EXP     (-1021)                 /* min binary exponent */
#define _DBL_RADIX      2                       /* exponent radix */
#define _DBL_ROUNDS     1                       /* addition rounding: near */

#define FLT_DIG         6                       /* # of decimal digits of precision */
#define FLT_EPSILON     1.192092896e-07F        /* smallest such that 1.0+FLT_EPSILON != 1.0 */
#define FLT_GUARD       0
#define FLT_MANT_DIG    24                      /* # of bits in mantissa */
#define FLT_MAX         3.402823466e+38F        /* max value */
#define FLT_MAX_10_EXP  38                      /* max decimal exponent */
#define FLT_MAX_EXP     128                     /* max binary exponent */
#define FLT_MIN         1.175494351e-38F        /* min positive value */
#define FLT_MIN_10_EXP  (-37)                   /* min decimal exponent */


#define FLT_MIN_EXP     (-125)                  /* min binary exponent */
#define FLT_NORMALIZE   0
#define FLT_RADIX       2                       /* exponent radix */
#define FLT_ROUNDS      1                       /* addition rounding: near */
...


小数常量也有类型,float类型的常量需要加后缀f
[解决办法]
引用:
主要是那个C=1000*1000,右边的表达式为1000000>32767,然后接下来就是自动截取了int中的两个字节,结果为16960.


理解整型数据精度最高

运行 printf(“%u\n", sizeof(int));     

热点排行