C # Converter objeto em decimal

Estou tentando converter um objeto com o valor0.39999999999999997 para uma variável decimal sem perder a precisã

object d = 0.39999999999999997;

Eu tentei os seguintes método

decimal val1 = Convert.ToDecimal(d); // val1 = 0.4
object val2 = Convert.ChangeType(d, Type.GetType("System.Decimal")); // val2 = 0.4
decimal val3 = decimal.Parse(d.ToString()); // val3 = 0.4
decimal val4 = (Decimal) d; // val4 = 0.4

Sei que isso não é um problema, pois o tipo de dados decimal não pode armazenar esse valor, conforme ilustrado abaix

decimal val5 = 0.39999999999999997m; // val5 = 0.39999999999999997;

Como converter esse objeto em decimal sem perder a precisão?

Estou usando o .NET Framework 3.5, se isso import

questionAnswers(8)

yourAnswerToTheQuestion