您现在的位置:程序化交易>> 股票公式>> 通达信>> 通达信知识>>正文内容

[注意]通达信整数减法有时会算错! [通达信]

  • 咨询内容: 两个整数相减 20130625 - 19000000 ,结果应该是1130625 ,可通达信算出来的却是 1130624!
    很简单的测试,自定义指标
    结果1:20130625 - 19000000;
    结果2:20130708 - 19000000;

    结果1是错误的,而结果2又是对的。
    目前在内核5.85和5.83 我都发现了这样的问题,通达信连最基础的整数减法都能算错,还有什么不能算错的?

    看图

    此主题相关图片如下345.jpg:

     

  • 通达信技术部: 这个问题确实是个严重的问题。很显然,它在内部是把两个整数估计用浮点数的方法来进行计算了。

     

  • 通达信客服: 是的。数据类型所限,不支持8位整数。

     

  • 网友交流:
    以下是引用vs9841在2013-7-16 16:30:00的发言:
    这个问题确实是个严重的问题。很显然,它在内部是把两个整数估计用浮点数的方法来进行计算了。



    确如楼主所言,将20130625存在float中再输出就变成了20130624了。


    一段c语言测试:
    #include
    #include

    int main()
    {
    float a1 = 20130625 ;
    printf("a1=%f\n",a1) ;
    return 0;
    }

     

  • 网友交流: 官方到现在还没有出来解决这个问题 。。那个float换成double就可以。C语言中这个float类型通常是32位,其中有8位用于表示指数部分和符号。24位用于表示其余部份,其中C保证至少小数点后6位有效,按照浮点数在内存中表示方法。float类型转换整数精度应该是6+1 =7位,所以用float类型转换8位整数会损失很多精度,至少损失一半的8位整数精度。所以说这个问题非常严重

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 1145508240  有需要帮忙请点击这里留言!!!进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容