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