感谢提交,下个版本会更正.
这是CPU的浮点运算误差导致的问题,CPU在进行浮点数的乘除运算时,不可避免的会出现一定的误差,比如mindiff*100这种情况我们会认为是1,但实际上计算结果是0.99999994等这种情况,所以在出现需要小数位的精确结果时,需要对浮点数进行强行的小数位整理才行。
AA:=ROUNDS( mindiff*100,0 );
frac:fracpart(AA),linethick0;
这样就正确了
我也去测试了一下,发现一个问题
fracpart(-0.01) 返回的结果是 -0.99 正确应该是 -0.01
fracpart(-3.4) 返回的结果是 -0.6 正确应该是 -0.4
只要是负数,返回的结果都不对。除非是小数点刚好是 .5
金字塔采用向下取整取小数方法,对于取绝对小数位,做绝对值处理即可