Проблема в том, что 45m и 45.00m - это одно и то же, и, поскольку это десятичное число, оно всегда будет отображать «45» вместо «45.00», если только вы не используете формататор строк каждый раз, когда пытаетесь его вывести.
Вы всегда можете создать другое свойство, которое выводит то, что вы хотите, например:
public decimal Length { get; set; }
public string FormattedLength
{
get
{
return String.Format("{0:0.00}", this.Length);
}
}
Кстати, мне это не нравится, но я верю, что это дает вам более или менее то, что вы ищете.