Never give up - LEO

人 只有在合适的地方 才能体现出最大的价值
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

VB 中的 Round函数

Posted on 2007-08-15 10:46  lizhiwen  阅读(7304)  评论(1编辑  收藏  举报
最近在做一个报表,这个报表有个原例子,原例子是用asp做的,按理两个报表显示的结果应该是一样的。可不知为什么,显示的小数总是差点,找来找去原来是round函数惹的。

 VB6中文版说Round函数是四舍五入函数,实际上这个函数采用的四舍六入五留双。VB的Round所采用的算法是这样的:
    1.25留一位,则1.2=round(1.25)
    如果是1.35,则1.4=round(1.35)
    奇进偶不进。这样在一大串需要四舍五入的数相加相减相乘时误差小一点。eg:1.25+1.35+1.45+1.55+1.15+1.65=8.4=round(1.25)+round(1.35)+round(……
    ROUND函数符合国家和国际标准,该函数是正确的。原先的四舍五入只是一个简化。
    在微软的Knowledge Base的文章:“Q194983 PRB: Round Function Different in VBA 6 and Excel Spreadsheet”和微软的Knowledge Base的文章:“Q189847 INFO: New String and Format Functions in Visual Basic 6.0”中都指出Round函数实行Banker舍入,而不是我们习惯的算术舍入(四舍五入)。你可以参考微软的Knowledge Base的文章:“Q196652 HOWTO: Implement Custom Rounding Procedures”,它对于舍入问题有详细的讨论。