user-0 提问: 求助浮点数上溢下溢问题

回复:
user: user-1
content: float 型数据在内存中整数部份值通常为1，但如果该数据的绝对值小于2^-127, 整数部份的值可以为0，所以可以表示绝对值最小值是2^-143.

user: user-0
content: 引用 5 楼 lm_whales 的回复:数据比较小时，转换为非规格化表示，可以表示10.0E-37f/100; 10.0E-37f/10000; 没有下溢，也不是其他不可表示数据。 不是0 printf时候，转换为double 但是不影响，表示范围。  float 无穷大，转换为double还是无穷大。而不是可表示的数据。 同样NAN也还是NAN,也就是说float不是在10.0E-37f/100，附近下溢了？thanks。。。书有问题啊。。。

user: user-0
content: 难道在调用printf（）时，float型的数值转换成了double型？

user: user-0
content: 引用 1 楼 qq523176585 的回复:float b = 3.40E+38; 编译时没有提示3.40E+38是一个const double 型的数据？,没有提示啊。。。。

user: user-2
content: float x=1; 	for(int i=0;i<128+40;i++) 	{ 		TRACE("%e\n",x); 	    x/=2; 	}  1.000000e+000 5.000000e-001 2.500000e-001 1.250000e-001 6.250000e-002 3.125000e-002 1.562500e-002 7.812500e-003 3.906250e-003 1.953125e-003 9.765625e-004 4.882813e-004 2.441406e-004 1.220703e-004 6.103516e-005 3.051758e-005 1.525879e-005 7.629395e-006 3.814697e-006 1.907349e-006 9.536743e-007 4.768372e-007 2.384186e-007 1.192093e-007 5.960464e-008 2.980232e-008 1.490116e-008 7.450581e-009 3.725290e-009 1.862645e-009 9.313226e-010 4.656613e-010 2.328306e-010 1.164153e-010 5.820766e-011 2.910383e-011 1.455192e-011 7.275958e-012 3.637979e-012 1.818989e-012 9.094947e-013 4.547474e-013 2.273737e-013 1.136868e-013 5.684342e-014 2.842171e-014 1.421085e-014 7.105427e-015 3.552714e-015 1.776357e-015 8.881784e-016 4.440892e-016 2.220446e-016 1.110223e-016 5.551115e-017 2.775558e-017 1.387779e-017 6.938894e-018 3.469447e-018 1.734723e-018 8.673617e-019 4.336809e-019 2.168404e-019 1.084202e-019 5.421011e-020 2.710505e-020 1.355253e-020 6.776264e-021 3.388132e-021 1.694066e-021 8.470329e-022 4.235165e-022 2.117582e-022 1.058791e-022 5.293956e-023 2.646978e-023 1.323489e-023 6.617445e-024 3.308722e-024 1.654361e-024 8.271806e-025 4.135903e-025 2.067952e-025 1.033976e-025 5.169879e-026 2.584939e-026 1.292470e-026 6.462349e-027 3.231174e-027 1.615587e-027 8.077936e-028 4.038968e-028 2.019484e-028 1.009742e-028 5.048710e-029 2.524355e-029 1.262177e-029 6.310887e-030 3.155444e-030 1.577722e-030 7.888609e-031 3.944305e-031 1.972152e-031 9.860761e-032 4.930381e-032 2.465190e-032 1.232595e-032 6.162976e-033 3.081488e-033 1.540744e-033 7.703720e-034 3.851860e-034 1.925930e-034 9.629650e-035 4.814825e-035 2.407412e-035 1.203706e-035 6.018531e-036 3.009266e-036 1.504633e-036 7.523164e-037 3.761582e-037 1.880791e-037 9.403955e-038 4.701977e-038 2.350989e-038 1.175494e-038 5.877472e-039 2.938736e-039 1.469368e-039 7.346840e-040 3.673420e-040 1.836710e-040 9.183550e-041 4.591775e-041 2.295887e-041 1.147944e-041 5.739719e-042 2.869859e-042 1.434930e-042 7.174648e-043 3.587324e-043 1.793662e-043 8.968310e-044 4.484155e-044 2.242078e-044 1.121039e-044 5.605194e-045 2.802597e-045 1.401298e-045  //float 最小可表示的数据 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000

user: user-2
content: 数据比较小时，转换为非规格化表示，可以表示10.0E-37f/100; 10.0E-37f/10000; 没有下溢，也不是其他不可表示数据。 不是0 printf时候，转换为double 但是不影响，表示范围。  float 无穷大，转换为double还是无穷大。而不是可表示的数据。 同样NAN也还是NAN

user: user-3
content: float b = 3.40E+38; 编译时没有提示3.40E+38是一个const double 型的数据？