Round関数は「四捨五入をする関数」ではありません。

IEEE 754 ですねー。これを知らないデベロッパも多いと聞きます。

VB6において、丸め関数は"INT","FIX","ROUND"があります。
このうち、"ROUND"は「最も近い偶数に丸める」という四捨五入であり、一般的なものとは違います(よく嵌るワナ)。

「偶数丸め」は IEEE 754 で定められており、JIS や ISO にも同じ規定があります。
多くの Round() 関数の挙動もこの IEEE 754 に則った「偶数丸め」です。

浮動小数点数(ふどうしょうすうてんすう)は、コンピュータにおける実数の近似値の表現方式。

実際にやってみた

'[VB6/VBScript(ASP)/VBA(Excelマクロなど)]
    MsgBox(Round(24.5)) '24.5を四捨五入で整数にすると25
'[VB.NET(ASP.NET)]
    MsgBox(Math.Round(24.5).ToString) '24.5を四捨五入で整数にすると25

驚きの結果は..?

ちなみに出力結果は24になります。

2007-10-03追記:MidpointRoundingを指定すればいわゆる四捨五入が可能

' .NET Framework 2.0 以上(VB2005/2008)で使用可能
' 3.4 = Math.Round( 3.45, 1, MidpointRounding.ToEven)
' 3.5 = Math.Round( 3.45, 1, MidpointRounding.AwayFromZero)

' VB2002/2003ならこう
' Math.Floor(x + 0.5)