Задача десятичного округления - PullRequest
0 голосов
/ 16 сентября 2011

мое свойство следующее: если мы введем 45, то добавим 45,00, но опять же получим 45, потому что значение преобразуется из строки.Так что это самый простой способ, которым я могу достичь этой цели.Где, если они введут 45, это приведет к 45,00 в поле значения;

 public decimal Length
    {
        get { if (this is Detail) 
           return ((this as Detail).Length.ToString() == string.Empty)
            ? 0 : (this as Detail).Length; else return 0; }
        set
        {
            if (this is Detail)
            {
                string val = string.Empty;

                if (!value.ToString().Contains("."))
                {
                    val = string.Format("{0}{1}", value.ToString(), ".00");
                    value =Math.Round(Convert.ToDecimal(val), 2);
                }
                else
                    value = Math.Round(value, 2);
                (this as Detail).Length = (value.ToString().Trim() == 
                string.Empty) ? 0 : value;
            }
        }
    }

Ответы [ 3 ]

1 голос
/ 16 сентября 2011
val = string.Format("{0:0.00}", value);
0 голосов
/ 16 сентября 2011

Проблема в том, что 45m и 45.00m - это одно и то же, и, поскольку это десятичное число, оно всегда будет отображать «45» вместо «45.00», если только вы не используете формататор строк каждый раз, когда пытаетесь его вывести.

Вы всегда можете создать другое свойство, которое выводит то, что вы хотите, например:

public decimal Length { get; set; }

public string FormattedLength
{
    get
    {
        return String.Format("{0:0.00}", this.Length);
    }
}

Кстати, мне это не нравится, но я верю, что это дает вам более или менее то, что вы ищете.

0 голосов
/ 16 сентября 2011

Это не имеет ничего общего с установщиком свойств.Вам необходимо указать формат строки в вашем графическом интерфейсе для округления чисел.

Также if (this is PersonalDetail) является серьезным недостатком дизайна.Вместо этого переопределите свойство Length в классе PersonalDetail.(не уверен, что цель этого свойства)

...