小心Round函数四舍五入BUG -许积云
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


小心Round函数四舍五入BUG 

发表时间:2007/11/17 14:12:49 评论(3) 浏览(13010)  评论 | 加入收藏 | 复制
   
摘 要:编写程序的时候经常遇到四舍五入的问题,以前都是使用Round函数,后来发现居然有问题,逢五的时候有时候会进位,有时候却又舍去,不知道是BUG还是其它什么问题。
正 文:
编写程序的时候经常遇到四舍五入的问题,以前都是使用Round函数,后来发现居然有问题,逢五的时候有时候会进位,有时候却又舍去,不知道是BUG还是其它什么问题。

今天有空的时候就来测试了一下,才发现原来也是有点规律的。

ROUND函数应该是:四舍六入、逢五时前面一位是偶数则舍、是奇数则进。以下是测试结果:
以下测试Round函数:
Round(8.104,2)=8.1
Round(8.114,2)=8.11
Round(8.124,2)=8.12
Round(8.134,2)=8.13
Round(8.144,2)=8.14
Round(8.154,2)=8.15
Round(8.164,2)=8.16
Round(8.174,2)=8.17
Round(8.184,2)=8.18
Round(8.194,2)=8.19

Round(8.105,2)=8.1
Round(8.115,2)=8.12
Round(8.125,2)=8.12
Round(8.135,2)=8.14
Round(8.145,2)=8.14
Round(8.155,2)=8.15
Round(8.165,2)=8.16
Round(8.175,2)=8.18
Round(8.185,2)=8.18
Round(8.195,2)=8.2

Round(8.106,2)=8.11
Round(8.116,2)=8.12
Round(8.126,2)=8.13
Round(8.136,2)=8.14
Round(8.146,2)=8.15
Round(8.156,2)=8.16
Round(8.166,2)=8.17
Round(8.176,2)=8.18
Round(8.186,2)=8.19
Round(8.196,2)=8.2
为此,需要四舍五入的时候还是不要用这个函数了。ASP编程使用formatnumber(8.185,2)函数,ACCESS编程则使用如下函数:
Public Function RoundToLarger(dblInput As Double, intDecimals As Integer) As Double
    Dim strFormatString As String
    If dblInput <> 0 Then
        strFormatString = "#." & String(intDecimals, "#")
        RoundToLarger = Format(dblInput, strFormatString)
    Else
        RoundToLarger = 0
    End If    
End Function

Access软件网交流QQ群(群号:198465573)
 
 相关文章
Microsoft access中文帮助BUG  【 朱亦文  2007/11/19】
关于access数据表中的Size字段Insert的Bug  【umvsoft整理  2008/7/2】
[access查询]Decimal类型字段排序存在BUG  【andymark  2009/10/11】
access开发平台--窗体按钮按下不弹出的Bug解决方法\按钮凹...  【红尘如烟  2011/10/22】
简单的限时使用示例(Bug已修复)  【纵云梯  2012/5/10】
Access2010|Access2013BUG一则--解决不能调...  【麥田  2012/6/7】
回味老漫画:《神秘的程序员们》-5:对待BUG  【麥田  2014/1/15】
常见问答
技术分类
相关资源
文章搜索
关于作者

许积云

文章分类

文章存档

友情链接