以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  金字塔软件问题提交  (http://222.73.7.161/bbs/list.asp?boardid=2)
----  金字塔在有小数的计算方面有问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=2&id=13558)

--  作者:瓢把子
--  发布时间:2012/8/9 11:56:41
--  金字塔在有小数的计算方面有问题

金字塔在有小数的计算方面有问题

比如,在股指,有小数。

a1:=high-close;
VERTLINE( a1=10),colorgreen,pointdot;

没问题,但是:

a1:=high-close;
VERTLINE( a1=10.4),colorgreen,pointdot;

就有问题了,换一种方式

a1:=high-close;
VERTLINE( a1>10.2 and a1<10.6),colorgreen,pointdot;

这个显示的结果应该一样,可实际上显示的是

a1:=high-close;
VERTLINE( a1>=10.2 and a1<=10.6),colorgreen,pointdot;


--  作者:董小球
--  发布时间:2012/8/9 13:08:37
--  
楼主能说说是什么问题么?
你光说有问题,我们不知道你遇到了什么问题啊

--  作者:王锋
--  发布时间:2012/8/9 13:29:12
--  

这不是金字塔的问题,你说的问题是目前计算机普遍存在的浮点计算误差,如果你需要一个精确的数字,应该使用金字塔提供的小数点整理函数,计算完毕后使用该函数进行整理

参考

四舍五入整理小数到指定位数
用法:ROUNDS(A,B) 表示整理数字A的小数点位数到B。该函数可用以做浮点数的精确相等判断。
例如:ROUNDS(12.345,2)将返回 12.35
所属函数组:数学函数


--  作者:yanxc
--  发布时间:2012/11/13 12:58:43
--  
close难道本身还能是2300.23吗?不太明白
--  作者:王锋
--  发布时间:2012/11/13 13:33:31
--  
交易所过来的数据,经过多次浮点转换,会导致出现2300.200000001等这样的情况,这就是我们指的浮点误差,对于浮点数的等于判断,哪怕是0.00000001也是不等于的
--  作者:jinzhe
--  发布时间:2012/11/13 13:33:47
--  
看王峰所说,有可能就是计算机的浮点误差导致把收盘价计算错了,
--  作者:wd369
--  发布时间:2012/11/14 10:59:25
--  使用自定义函数出错
原始数据的浮点误差造成的,
我在以前提到过的,像大智慧在数据结构中就有一项是精确度,在行情中显示的数据已经经过精确度再处理,就不会出现这样情况.
金字塔可以借鉴这样做法.由每个用户在公式里面自己处理,由此出现的问题就太多了.