Adrian4B Adrian4B - 21 days ago 7
C# Question

C# float to decimal conversion

Any smart way to convert a float like this:

float f = 711989.98f;


into a decimal (or double) without loosing precision?

I've tried:

decimal d = (decimal)f;
decimal d1 = (decimal)(Math.Round(f,2));
decimal d2 = Convert.ToDecimal(f);

Answer

It's too late, the 8th digit was lost in the compiler. The float type can store only 7 significant digits. You'll have to rewrite the code, assigning to double or decimal will of course solve the problem.