ACCESS中能够像EXCEL样正真做到的四舍五入自定义函数(模块),哪位朋友能提供一下?

本人对VB不熟悉。因此,需要提供定义好的,能拿来就能用的。(在网上找了几个,但都不能达预期的目的)
邮箱地址:[email protected]

Round函数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。可是当保留位跟着的即使是5,有可能进位,也有可能舍去,机会各50%。这样就会造成在应用程序中计算有误。下面这个函数能真正实现四舍五入功能,用以取代Round函数。

Public Function RoundToLarger(dblInput As Double, intDecimals As Integer) As Double
'执行Round()函数,有可能进位,也有可能舍去 
On Error GoTo Err_RoundToLarger
Dim strFormatString As String '格式化字符串
'如果是“0”,则返回“0”,否则进行适当的格式化:
If dblInput <> 0 Then
strFormatString = "#." & String(intDecimals, "#")
RoundToLarger = Format(dblInput, strFormatString)
Else
RoundToLarger = 0
End If
Err_RoundToLarger: RoundToLarger = 0
End Function

用法=====================================
? round(2.385, 2)
2.38
? roundtolarger(2.385, 2)
2.39追问

我需要在查询条件中,加入这个四舍五入函数。如,像:round(([单价]*0.7),2)。请问你写的这个函数具体怎么运用?

追答

直接用RoundToLarger替换round,即RoundToLarger([单价]*0.7,2)
当然,RoundToLarger函数需要public定义在你的公共模块中

或者也可以试试format([单价]*0.7,"#.##")

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-21
你写个函数过程不就行了,要他怎么入就怎么入,你让他7舍8入都可以。追问

关键是我对编程不熟悉.能否麻烦你提供一个用ACCESS程序代码写好了的模块,以便我直接调用.谢谢了.(附件请发:[email protected])

第2个回答  2013-01-21
建议不要更改原数据,创建一个查询,用round函数四舍五入后as到一个新字段。追问

我就是这样做的。但与实际计算出来的结果不一样。

追答

四舍五入后,由于部分小数被舍弃了,数据计算最终结果肯定会有偏差。个人觉得1000万的合计,差额在10万以下就可以接受。

追问

那你用round(3.15*0.7,2)在ACCESS和EXCEL中验证一下,看看结果不否存在差异。

追答

2.205 四舍五入后 是2.1 单个数据会多0.05,2.204的话就会少0.04,数据量大后,合计数与不四舍五入的数据就会存在偏差。