版主: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吗?
计算机的数学函数就是这样的,如果你在意这个,你可以自己写一个四舍五入的函数
取股票的涨跌停牌价格和实际价格会有差距,因为取到的a和b的值是3位小数,四舍五入后和实际涨跌停板价格差1分钱,怎么办?
Set Reports = marketdata.GetReportData(Code,MARKET)
a=Reports.UpperLimitPrice
b=Reports.LowerLimitPrice
你把哪支股票的代码贴过来,
另外,a和b都是什么值,我们看看帮你找一下解决方案
在 VB,VBScript,C#,J#,T-SQL 中 Round 函数都是采用 Banker's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的。
为了避免四舍五入规则造成的结果偏高,误差偏大的现象出现,一般采用四舍六入五留双规则(Banker's Rounding)。
准确而言,四舍六入五留双应称作“四舍六入,逢五无后则留双”,如此就可以完全覆盖此规则的详情。