欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 关于Round函数的问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3480人关注过本帖树形打印复制链接

主题:关于Round函数的问题

帅哥哟,离线,有人找我吗?
wsanle
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:196 积分:594 威望:0 精华:2 注册:2011/8/22 18:26:49
关于Round函数的问题  发帖心情 Post By:2015/6/3 21:50:30 [只看该作者]

版主:Round()函数是四舍五入的函数,按理是小数4以下舍去,5以上进一位,但是以下计算确是这样,不知为什么?
        c0=77.344
c1=77.345
c2=77.346
c3=77.347
c4=77.348
c5=77.349
Application.MsgOut Round(c0,2)
Application.MsgOut Round(c1,2)
Application.MsgOut Round(c2,2)
Application.MsgOut Round(c3,2)
Application.MsgOut Round(c4,2)
Application.MsgOut Round(c5,2)


       77.34
       77.34
       77.35
       77.35
       77.35
       77.35

      难道77.345四舍五入后不是77.35吗?

 回到顶部
帅哥,在线噢!
admin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2015/6/3 21:54:48 [只看该作者]

计算机的数学函数就是这样的,如果你在意这个,你可以自己写一个四舍五入的函数

 回到顶部
帅哥哟,离线,有人找我吗?
wsanle
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:196 积分:594 威望:0 精华:2 注册:2011/8/22 18:26:49
  发帖心情 Post By:2015/6/3 22:30:12 [只看该作者]

取股票的涨跌停牌价格和实际价格会有差距,因为取到的a和b的值是3位小数,四舍五入后和实际涨跌停板价格差1分钱,怎么办?
Set Reports = marketdata.GetReportData(Code,MARKET)
a=Reports.UpperLimitPrice
b=Reports.LowerLimitPrice


 回到顶部
帅哥,在线噢!
admin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2015/6/4 0:16:52 [只看该作者]

你把哪支股票的代码贴过来,

另外,a和b都是什么值,我们看看帮你找一下解决方案


 回到顶部
帅哥哟,离线,有人找我吗?
wjs
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:265 积分:906 威望:0 精华:0 注册:2010/8/5 3:39:25
  发帖心情 Post By:2015/6/5 12:24:09 [只看该作者]

在 VB,VBScript,C#,J#,T-SQL 中 Round 函数都是采用 Banker's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的。
为了避免四舍五入规则造成的结果偏高,误差偏大的现象出现,一般采用四舍六入五留双规则(Banker's Rounding)。
  准确而言,四舍六入五留双应称作“四舍六入,逢五无后则留双”,如此就可以完全覆盖此规则的详情。

版主评定:好评,获得5个金币奖励好评,获得5个金币奖励
(理由:惩罚)
 回到顶部