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:
ADVANCED-DOTNET@DISC...] On Behalf Of Eddie Lascu
> Sent: Monday, August 25, 2008 12:28 PM
> To:
ADVANCED-DOTNET@DISC...
> 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
opensubscriber is not affiliated with the authors of this message nor responsible for its content.