float(M,D),存入值会因为精度问题发生变化,及存在后面的小数点的值可能会与存入的值不一样。

产生这个的原因是与CPU的浮点运算精度有关,不同的CPU,精度会有差别。大部分情况下目前主流的X86的CPU,有如下精度:

要得到1位或2位精确小数的话,整数不能高于 32767

即:f<32767.99

因为 2E15=32768

 所以最多只能正确处理0~32767的整数,

要得到3位 精确 小数的话,整数不能高于16383

即:f< 16383 .999

因为 2E14=16384

要得到4位 精确 小数,整数不能高于2047

即:f< 2047 .9999

而 2E11=2048

要得到5位 精确 小数,整数不能高于127

即:f< 127 .99999

而 2E7=128

要得到6位 精确 小数,整数不能高于15

即:f<15 .999999

而 2E4=16

要得到7位 精确 小数,整数不能高于0

即:f< 0 .9999999

而 2E0=0

要得到8位以上的 精确 小数,是不可能的

即:f不存在