Re: Losing precision when converting to double

Sebastien Lorion <[email protected]> Mon, 30 Oct 2006 23:45:00 +0800
Newsgroups gmane.comp.windows.devel.dotnet.cx
Message-ID <[email protected]>
While you are right, this particular example does not point out precision
loss but rather inexact conversion from float to double... Removing the f in
0.1f or declaring x as a float "fix" the problem.

Sébastien

> -----Original Message-----
> From: Discussion relating to the specifics of the C# and Managed C++
> languages [mailto:[email protected]] On Behalf Of Efran
> Cobisi
> Sent: Monday, October 30, 2006 9:16 PM
> To: [email protected]
> Subject: Re: [DOTNET-CX] Losing precision when converting to double
> 
> Well, the double (and single) data type is, by definition, precise at
> the extent of the precision of the data type itself.
> If precision is needed, you should use the decimal data type.
> 
> I like very much the example provided in Martin Fowler's book PoEAA
> (converted to C#):
> 
> ---
> double x = 0;
> 
> for (int i = 0; i < 10; i++)
>     x += 0.1f;
> 
> Console.WriteLine(x); // This one will not print out what you're
> expecting...
> ---
> 
> HTH,
> 
> Efran Cobisi, cobisi.com
> 
> Mikael Bergforsen wrote:
> > Whenever the result of an operation is a double I loose precision;
> > here are some examples:
> >
> > double a = 1111.111111111;  //a = 1111.1111111109999 OK
> >
> > converting from decimal
> > double a = Convert.ToDouble(1111.111111111M); //a = 1111.111083984375
> > NOT OK
> >
> > result of addition
> > double a = 1111.111111111;
> > double b = 1111.111111111;
> > double c = a + b; //c = 2222.22216796875 NOT OK double c =
> > 2222.222222222; // c = 2222.2222222219998 OK
> >
> > Any idea why this happens?
> >
> > ===================================
> > This list is hosted by DevelopMentor®  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

===================================
This list is hosted by DevelopMentor®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com