Rss & SiteMap

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

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

标题:[原创]函数fracpart有BUG?

1楼
z7c9 发表于:2011/1/9 16:47:04

Test:

以下内容为程序代码:

1 frac:fracpart(mindiff*100),linethick0;

 

在黄金连续上的结果为1?

 

图片点击可在新窗口打开查看

2楼
fly 发表于:2011/1/10 9:15:17

感谢提交,下个版本会更正.

3楼
王锋 发表于:2011/1/10 10:07:46

这是CPU的浮点运算误差导致的问题,CPU在进行浮点数的乘除运算时,不可避免的会出现一定的误差,比如mindiff*100这种情况我们会认为是1,但实际上计算结果是0.99999994等这种情况,所以在出现需要小数位的精确结果时,需要对浮点数进行强行的小数位整理才行。

AA:=ROUNDS( mindiff*100,0 );
frac:fracpart(AA),linethick0;

 

这样就正确了

4楼
tittat 发表于:2011/1/10 12:27:35
是的,要用round将数圆整。这不能算作bug,即使高级语言编程中也会有此类问题。
5楼
阿火 发表于:2011/1/10 12:47:22

我也去测试了一下,发现一个问题

fracpart(-0.01)  返回的结果是 -0.99   正确应该是 -0.01

fracpart(-3.4)  返回的结果是   -0.6     正确应该是 -0.4

 

只要是负数,返回的结果都不对。除非是小数点刚好是 .5

6楼
admin 发表于:2011/1/10 13:01:29

金字塔采用向下取整取小数方法,对于取绝对小数位,做绝对值处理即可

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


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