2012-05-25 3 views
0

хотите объявить десятичное свойство с десятичной точкой (8,4). , но значение по умолчанию C# является десятичным (18,2).Как объявить свойство с десятичной запятой (19,4)

public class GroupItems 
    { 

     public GroupItems() 
     { 


     } 

     public string ItemCode { get; set; } 
     public string ItemDesc { get; set; } 
     public decimal ItemPrice { get; set; } 
     public decimal ItemAmount { get; set; } 
     public double ItemQty { get; set; } 


    } 
+0

C# 'decimal'/.NET' System.Decimal' * не работает так, как это * (т. Е. Точность, специфичная для этого элемента). Он просто сохраняет значение, данное ... –

+0

Какой? (19,4), как в названии или (8,4), как в вопросе? –

+0

Что вы имеете в виду и откуда вы получили дефолтную (18,2) часть? – V4Vendetta

ответ

1

Вы можете сделать что-то вроде этого, для вещей, которые вы хотите достичь

decimal _ItemPrice; 
    public decimal ItemPrice 
    { get 
    { return Math.Round(_ItemPrice, 2) } 
    set 
    { _ItemPrice = value;} 
    } 

Вам необходимо внести изменения в ГЭТ и множество вашей собственности, как в коде выше ..

1

Вы не можете сделать это напрямую. Вы можете использовать метод set для реализации этого поведения.

private decimal _myProperty; 

    public decimal MyProperty 
    { 
     get { return _myProperty; } 
     set { 
      if (value <= 99999999) //for 8 
      { 
       _myProperty = Math.Round(value,4); 
      } 
      else 
      { 
       throw new InvalidOperationException(); 
      } 
     } 
    } 
0

Точность .net десятичная «28-29 значащих цифр», который является более чем достаточно для этого случая. link

Смежные вопросы