Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:FLOOR以及INTPART函数BUG

1楼
lanchongms 发表于:2012/11/22 2:34:56

比如股指

LL:INTPART(2311.2/mindiff)*mindiff;

 

输出的是2311,而不是2311.2

 

同理

LL2:FLOOR(2311.2/MINDIFF)*MINDIFF;

也一样出错

 

把MINDIFF换成0.2,BUG依然存在

2楼
lanchongms 发表于:2012/11/22 2:57:47

但直接把2311.2/0.2=11556这个值

代入floor里面,

floor(11556)*0.2=2311.2却是正确的~

 

说明floor(2311.2/0.2)计算有误!

3楼
jinzhe 发表于:2012/11/22 9:07:46
测试的确是有bug,感谢用户提交的bug!
4楼
jinzhe 发表于:2012/11/22 9:21:11

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20121122092054.png
图片点击可在新窗口打开查看
5楼
王锋 发表于:2012/11/22 11:59:45

这是CPU的浮点计算误差导致,参考下面的解决方法

 

DD:=2311.2/mindiff; //经过该计算后会导致结果为 11555.99999999这样的数字,因此进行整理后再转整数
LL:INTPART(ROUNDS(dd ,1 ))*mindiff;

参考 http://www.weistock.com/bbs/dispbbs.asp?BoardID=2&ID=13558&replyID=61492&skin=1

6楼
lanchongms 发表于:2012/11/22 17:14:10

其实我是想在开空的时候,往不利方向取整而已~

比如2311.21-2311.39,我如果想把它取为2311.2,这种算法就不行了~

FLOOR(rounds(2311.39/mindiff,1))*mindiff得出来是2311.4

 

共6 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.07813 s, 2 queries.