四舍六入逢五奇进偶不进,如何取整数
Private Sub Command1_Click()Dim a As Double
Dim b As String
a = 332.5
b = Rvt(a, 0)
Print b
End Sub
Function Rvt(ByVal x As Double, ByVal n As Integer) As String
'四舍六入逢五奇进偶不进的函数
Dim sFmt As String
Dim sRet1 As String, sRet2 As String
Dim sTmp As String
Dim intR As Integer
If n < 0 Then n = 0 '位数必须是小数位数,不得小于 0
sTmp = Str(x) '转为 字符串
intR = InStr(1, sTmp, ".") '小数点位置
intR = intR + n '具体保存的那一位
sFmt = "0." & String(n, "0") '生成掩模
'Format 包含 四舍五入功能,所以很多不需要处理.
'只需要处理 ,逢五奇进偶不进的情况,并且直接处理好数据来.
If intR = Len(sTmp) - 1 Then '仅处理 保留长度为 原数据长度+1 的数据
sRet1 = Mid(sTmp, intR, 1) '最后一后
sRet2 = Mid(sTmp, intR + 1, 1) '需要判断进位的
If sRet2 = "5" Then '后面那位 等于5,不等于5的,不需要处理
If Val(sRet1) Mod 2 = 0 Then '偶数
x = Val(Left(sTmp, intR)) '取掉后面的数,因为 format 会造成进位
End If
End If
End If
Rvt = Format(x, sFmt) '生成结果,
End Function
###############结果应为332,但此程序运行后是322.,多了个".",请问如果利用四舍六入五看奇偶不但能取小数,还能取整,(个人分析应该修改输出起始点,但是没改明白),请大家多帮助。
[ 本帖最后由 smy1860 于 2010-11-9 18:29 编辑 ]