Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共5 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:关于Round函数的问题

1楼
wsanle 发表于: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吗?
2楼
admin 发表于:2015/6/3 21:54:48
计算机的数学函数就是这样的,如果你在意这个,你可以自己写一个四舍五入的函数
3楼
wsanle 发表于:2015/6/3 22:30:12
取股票的涨跌停牌价格和实际价格会有差距,因为取到的a和b的值是3位小数,四舍五入后和实际涨跌停板价格差1分钱,怎么办?
Set Reports = marketdata.GetReportData(Code,MARKET)
a=Reports.UpperLimitPrice
b=Reports.LowerLimitPrice

4楼
admin 发表于:2015/6/4 0:16:52

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

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

5楼
wjs 发表于:2015/6/5 12:24:09
在 VB,VBScript,C#,J#,T-SQL 中 Round 函数都是采用 Banker's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的。
为了避免四舍五入规则造成的结果偏高,误差偏大的现象出现,一般采用四舍六入五留双规则(Banker's Rounding)。
  准确而言,四舍六入五留双应称作“四舍六入,逢五无后则留双”,如此就可以完全覆盖此规则的详情。
共5 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.03711 s, 2 queries.