C # Преобразование объекта в десятичное

Я пытаюсь преобразовать объект со значением 0,39999999999999997 в десятичную переменную без потери точности.

object d = 0.39999999999999997;

Я пробовал следующие методы.

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

Я знаю, что проблема не в том, что десятичный тип данных не может сохранить это значение, как показано ниже.

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

Как преобразовать этот объект в десятичное без потери точности?

Я использую .NET Framework 3.5, если это имеет значение.

13
задан Chathura W 27 July 2011 в 07:12
поделиться