using System; public class Test { public static void Main() { double d = -0.99999999999999956d; decimal result = Convert.ToDecimal(d); // Result = -1 decimal t = 0M; bool b = d < 0; if (b) d = -d; if (d >= 0.5) { d -= 0.5; t += 0.5M; } if (d >= 0.25) { d -= 0.25; t += 0.25M; } if (d >= 0.125) { d -= 0.125; t += 0.125M; } if (d >= 0.0625) { d -= 0.0625; t += 0.0625M; } t += Convert.ToDecimal(d); if (b) t = -t; Console.WriteLine(t); } }