RT,我使用atof函数转换CString型为float型,怎么会出现转化的值不等于字符串表示值,譬如我做了比较,获取一个CString我转成float型,然后和给定值比较,小于它则保留,大于的则删除,但是为什么我还是获取大于我给定值的数字?
是那边出的问题?

解决方案 »

  1.   

    这还要什么代码比较时是怎么比较的?
    直接 == 操作吧呵呵,那就错了。浮点数和双精浮点不能这么比的和存储方式有关,它们存储时是指数和密的方式也就是说 1.299999999999.  可能是 1.3 这个值。你取1.3 结果保存成了 1.2999999你1.3 == 1.299999999     不成立比较时用  fabs(a-b) > DBL_EPSILON  这样The following constants give the range and other characteristics of the double and float data types, and are defined in FLOAT.H:Constant Value Description
    DBL_DIG 15 # of decimal digits of precision
    DBL_EPSILON 2.2204460492503131e-016 Smallest such that 1.0+DBL_EPSILON !=1.0
    DBL_MANT_DIG 53 # of bits in mantissa
    DBL_MAX 1.7976931348623158e+308 Maximum value
    DBL_MAX_10_EXP 308 Maximum decimal exponent
    DBL_MAX_EXP 1024 Maximum binary exponent
    DBL_MIN 2.2250738585072014e-308 Minimum positive value
    DBL_MIN_10_EXP (-307) Minimum decimal exponent
    DBL_MIN_EXP (–1021) Minimum binary exponent
    _DBL_RADIX 2 Exponent radix
    _DBL_ROUNDS 1 Addition rounding: near
    FLT_DIG 6 Number of decimal digits of precision
    FLT_EPSILON 1.192092896e-07F Smallest such that 1.0+FLT_EPSILON !=1.0
    FLT_MANT_DIG 24 Number of bits in mantissa
    FLT_MAX 3.402823466e+38F Maximum value
    FLT_MAX_10_EXP 38 Maximum decimal exponent
    FLT_MAX_EXP 128 Maximum binary exponent
    FLT_MIN 1.175494351e-38F Minimum positive value
    FLT_MIN_10_EXP (–37) Minimum decimal exponent
    FLT_MIN_EXP (–125) Minimum binary exponent
    FLT_RADIX 2 Exponent radix
    FLT_ROUNDS 1 Addition rounding: near