[注意]通达信整数减法有时会算错! [通达信]
-
咨询内容:
两个整数相减 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 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容