I don't know your data, but based on your log you have at least 3 digits to the right of the decimal, multiply by 1000 and apply your own round to fix the amount. Another approach I once took where we wanted no 'rounding' what so ever, was to convert to string remove the period and convert back to a number. This last is not very processor friendly so if there is a lot of data involved that should be considered.
John Warner > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of Eddie Lascu > Sent: Monday, August 25, 2008 12:28 PM > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: [ADVANCED-DOTNET] Converting doubles into integers > without rounding errors > > > Hello everyone, > > I have some objects that contain an amount field that is > declared as double. Since it contains amounts, it always has > only two decimal digits that are significant. During the > process I need to convert that double into an integer by > removing the decimal point. For example, $78.59 should be > converted to integer 7859 and $101.53 to 10153. in my code I > have uint nIntAmount = (uint)(objMyObject.Amount * 100); > > The problem I am facing is that sometimes, very rarely, there > is a rounding error that is introduced and the integer > obtained is off by a cent (plus or minus). For example, this > is a line that was traced in my log file: > > "Updating the batch with $137.89 as the amount in the > transaction. This amount was converted to 13788." > > Can either of you suggest a different way to convert the > amounts in integers without this nagging rounding error? > > Any help will be appreciated, > > Eddie > > =================================== > This list is hosted by DevelopMentorR http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > =================================== This list is hosted by DevelopMentorĀ® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com