2016-11-17 3 views
2

Я пытаюсь удалить последние 6 символов из item.Size, потому что данные имеют десятичное место и 5 завершающих 0s в базе данных.Как отрезать/урезать это значение?

sb.Append("<div>" + item.Size + " " + item.Units + "&nbsp;</div>"); 

ie. item.Size отображается как 1.00000, и мне нужно его просто отображать как 1.

Это часть StringBuilder, и поскольку я новичок в кодировании, даже не уверен в правильном пути.

+0

decimal.Truncate (десятичное) -> обрезает 123,456 до 123 десятичных знаков. –

+1

Если 'Size' является числовым значением, то почему он хранится в строке? – juharr

+0

'Convert.ToInt32 (item.Size)' – vbguyny

ответ

3
sb.Append("<div>" + (int)item.Size + " " + item.Units + "&nbsp;</div>"); 
+0

не будет работать, если 'Size' является строкой – Jonesopolis

+0

Это работало как шарм, спасибо! –

+0

@Jonesopolis На 100 пунктов опережает тип данных double или decimal :-) – user1681317

0

StringBuilder обладает теми же возможностями форматирования, String.Format при использовании AppendFormat метод:

sb.AppendFormat("<div>{0:N0} {1}&nbsp;</div>", item.Size, item.Units); 

Формат строки «N0» говорит его форматировать число с 0 знаков после запятой. Это предполагает элемент item.Size хранится как числовой тип. Если нет, то просто удалить часть строки, вы не хотите:

sb.AppendFormat("<div>{0} {1}</div>", item.Size.Split('.')[0], item.Units); 

Здесь я использовал Split, предполагая, что значение на самом деле что-то вроде того, что вы показали в вашем примере.

0

Лучше использовать int.TryParse (или Int32.TryParse) способ. потому что если item.Size не конвертируется в int, тогда он не даст вам никаких исключений. вы можете использовать int или long согласно вашему выбору. Таким образом, вы можете справиться с этим в своем коде в соответствии с условием if/else.

Пример кода:

int size; 
    string str = ""; 
    if(int.TryParse(str, out size) == true) 
    { 

    } 
    else 
    { 

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