以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  高级功能研发区  (http://222.73.7.161/bbs/list.asp?boardid=5)
----  动态权益获得有问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=98702)

--  作者:gamexumeng
--  发布时间:2016/6/17 20:23:58
--  动态权益获得有问题


此主题相关图片如下:qq截图20160617201501.jpg
按此在新窗口浏览图片

此主题相关图片如下:qq截图20160617201702.jpg
按此在新窗口浏览图片

 

第一个截图是 20:15分,第二个截图是20:17 分,少了;

 

我为什么会截图,是因为我想问的是:

 

FLOAT ival = g_pMainFormework->GetAccount2(6, szAcc).fltVal;

我通过这个代码拿出来的 ival , 居然只有整数部分,截图可以看到,没有小数部分,所以我想截图问这个问题,然后2分钟后,动态权益,居然变了。。。

 

实际上,在此之前几分钟,我通过这个代码拿出来的整数值,和金字塔的都不一样,差了1000多,我忘了截图,关了重开。


--  作者:admin
--  发布时间:2016/6/19 14:46:13
--  
这个问题主要是因为返回值是float类型,只有4个字节长度,数字越大后,数值的精度会下降
--  作者:gamexumeng
--  发布时间:2016/6/20 9:06:12
--  
不能给出来这么个解释啊,明显是你们四舍五入了。 你们查查看吧

--  作者:gamexumeng
--  发布时间:2016/6/20 9:07:55
--  
至于为什么会少了1.08 我就不知道了,只能说可能有奇怪的bug
--  作者:gamexumeng
--  发布时间:2016/6/21 10:20:51
--  
这个问题你们给解答一下啊,你们四舍五入了,不是精度问题,如果余额大于0.5 ,就是进1, 这显然是四舍五入了。我需要拿到精确的动态权益值,不是精确到元啊
--  作者:admin
--  发布时间:2016/6/21 10:32:25
--  
这个暂时没办法,只能后面将这个字段升级到double字段后才能解决你说的问题,但是我们要考虑到已有的客户,不能盲目升级
--  作者:gamexumeng
--  发布时间:2016/6/21 10:54:11
--  
可是你们自己的权益为什么是对的呢?
--  作者:gamexumeng
--  发布时间:2016/6/21 10:54:35
--  
只要你能把自己的权益原封不动的给我们就可以了啊
--  作者:admin
--  发布时间:2016/6/21 10:57:29
--  
你自己去吧一个 double 类型的 1000万的你上面显示的数字去赋值给一个 float型的浮点数自己试试就知道了,这个是基本的编程常识,我们不做过多的解释
--  作者:gamexumeng
--  发布时间:2016/6/21 11:38:56
--  
这话说的,这个怎么是编程的基本常识,你们如果用了float,那么float的范围是:3.4*10^-38 ~3.4*10^38或者-(3.4*10^-38 ~3.4*10^38) ,

现在你们的问题是 你们自己把double 赋值给了 float,这个我哪里能知道呢? 既然你们用了double,为什么给用户返回的是 float?
你们返回的 VARAINT 变量应该是 DOUBLE 类型的,你们自己处理错了,这个才是编程常识啊。
FLOAT ival = g_pMainFormework->GetAccount2(6, szAcc).fltVal;
--> 应该是:
DOUBLE ival =_pMainFormework->GetAccount2(6, szAcc).dblVal;

如果考虑到兼容性问题,那么是不是可以用一个 新的type来获得 double值呢?