CC:=4889.26;
T1: FLOOR(CC/0.2)*0.2; //正确=4889.2
T2: T1/0.2; //正确=24446
T3: FLOOR( T2); //错误=24445 (按道理应该等于24446)
T4: FLOOR(T1 /0.2)*0.2; //错误=4889 (再经过一次FLOOR操作后少了一个做小交易单元)
看下上面的计算过程,第三步按道理应该对于24446,为什么错了?
T3是因为float类型数据造成的。T2在float类型中,可能是2444.5.99999.这种情况你自己在C语言等中可以看到。
有什么办法能调准不偏差,4889.26,取最小交易单元后应当是4889.2才对
乘以5效果更好,能保证最小交易单位为0.2
b:floor(a*5)/5
除以0.2 改成 乘以5 效果就不一样了,与预期的一致