Rss & SiteMap

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

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

标题:关于FLOOR函数使用问题

1楼
xxinstar100 发表于:2020/2/16 22:33:26

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,为什么错了?
2楼
wenarm 发表于:2020/2/16 23:03:32

T3是因为float类型数据造成的。T2在float类型中,可能是2444.5.99999.这种情况你自己在C语言等中可以看到。

 

3楼
xxinstar100 发表于:2020/2/17 8:57:08


有什么办法能调准不偏差,4889.26,取最小交易单元后应当是4889.2才对
4楼
wenarm 发表于:2020/2/17 9:04:30

没办法。数据类型造成的。

5楼
yukizzc 发表于:2020/2/17 9:05:40
a:=4889.26;
b:floor(a*10)/10
6楼
xxinstar100 发表于:2020/2/17 12:35:13
乘以5效果更好,能保证最小交易单位为0.2

b:floor(a*5)/5

除以0.2 改成 乘以5 效果就不一样了,与预期的一致
共6 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.03906 s, 3 queries.