View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
okaizawa okaizawa is offline
external usenet poster
 
Posts: 129
Default Worksheet rounding vs VBA rounding

Hi,

Format function also does the arithmetic rounding like the worksheet
ROUND function. (except in a particular environment)

MsgBox CDbl(Format(2.5, "0")) 'shows 3

The Format() Function Gives Different Results in Windows XP Than in
Windows 2000
http://support.microsoft.com/kb/321047/en-us/


the accuracy of round function for decimal number is not so good.

MsgBox WorksheetFunction.Round(9000.92585, 4) 'shows 9000.9258
MsgBox Round(0.00015, 4) 'shows 0.0001

if you want such accuracy, you should think about a method that fits the
range of numerical data. (as we won't test functions with all number.)
for instance, if the minimum change is 0.00001,
Int((9000.92585 + 0.00001 / 10) * 10000 + 0.5) / 10000 is sure to return
9000.9259 even though a number has a small rounding error.

--
HTH,

okaizawa

Simon Cleal wrote:
Excel 2K

The VBA Round function uses 'Bankers rounding' (half the time the .5 is
rounded up, half the time down).

The worksheet ROUND() function uses 'normal rounding' (.5 is always rounded
up)

Is there an easy way to make the VBA rounding the same as the worksheet
rounding

Thanks in advance
Simon