以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- FLOOR以及INTPART函数BUG (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=30816) |
-- 作者:lanchongms -- 发布时间:2012/11/22 2:34:56 -- FLOOR以及INTPART函数BUG 比如股指 LL:INTPART(2311.2/mindiff)*mindiff;
输出的是2311,而不是2311.2
同理 LL2:FLOOR(2311.2/MINDIFF)*MINDIFF; 也一样出错
把MINDIFF换成0.2,BUG依然存在 |
-- 作者:lanchongms -- 发布时间:2012/11/22 2:57:47 -- 但直接把2311.2/0.2=11556这个值 代入floor里面, floor(11556)*0.2=2311.2却是正确的~
说明floor(2311.2/0.2)计算有误! |
-- 作者:jinzhe -- 发布时间:2012/11/22 9:07:46 -- 测试的确是有bug,感谢用户提交的bug! |
-- 作者:jinzhe -- 发布时间:2012/11/22 9:21:11 -- ![]() ![]() |
-- 作者:王锋 -- 发布时间:2012/11/22 11:59:45 -- 这是CPU的浮点计算误差导致,参考下面的解决方法
DD:=2311.2/mindiff; //经过该计算后会导致结果为 11555.99999999这样的数字,因此进行整理后再转整数 参考 http://www.weistock.com/bbs/dispbbs.asp?BoardID=2&ID=13558&replyID=61492&skin=1 |
-- 作者:lanchongms -- 发布时间:2012/11/22 17:14:10 -- 其实我是想在开空的时候,往不利方向取整而已~ 比如2311.21-2311.39,我如果想把它取为2311.2,这种算法就不行了~ FLOOR(rounds(2311.39/mindiff,1))*mindiff得出来是2311.4
|