我随便测了一下,float最大只能保存3000万的数值,再高,就不准确了, 比如: 看来,要想保存准确的带小数的数值还是要用double 各位怎么看 |
|
从编码形式角度,2的N次方(N不大于128)应该是准确的
|
|
别人说的是浮点数 |
|
float.h
#define DBL_DECIMAL_DIG 17 // # of decimal digits of rounding precision #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_HAS_SUBNORM 1 // type does support subnormal numbers #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_TRUE_MIN 4.9406564584124654e-324 // min positive value #define FLT_DECIMAL_DIG 9 // # of decimal digits of rounding precision #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_HAS_SUBNORM 1 // type does support subnormal numbers #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 normalized 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_TRUE_MIN 1.401298464e-45F // min positive value |
|
25分 |
4byte的int类型能表示2的100次方? |
5分 | |
10分 |
一个数转为二进制数,其位数不超过24位,那么用float将会是准确值,如果不超过53位,double将是准确值,再大就要等科技进步了
|