Round 的百位的四舍五入的问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 00:50:43
Round(692.5,0)应该等于653 但实际等于652 WHY??
Round(2.5,0)=3
已经解决 sql语句里执行的Round() 还是谢谢

VB6中文版说这个函数是四舍五入函数,实际上这个函数采用的四舍六入五留双。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函数符合国家和国际标准,该函数是正确的。原先的四舍五入只是一个简化。

你可以试下这个函数
Function RoundEx(Number, Optional nLen As Long = 0)
On Error GoTo ErrRound
Dim dblAdd As Double

dblAdd = 10 ^ (-nLen - 1)
If Number < 0 Then dblAdd = -dblAdd
Number = Number + dblAdd
RoundEx = Round(Number, nLen)

Exit Function
ErrRound:
MsgBox "实时错误:" & Err.Number & vbCrLf & vbCrLf & Err.Description, vbExclamation, "错误提示"
End Function

Round(2.5,0)应该等于2才对吧

看msdn的解释
If value is halfway between two numbers, one of which is even and the other odd, then the even number is returned.

如果一个数正好在两个数中间,则返回偶数