以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp)
-- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5)
---- 动态权益获得有问题 (http://weistock.com/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值呢?
|