Одно предостережение о вышеупомянутых RegEx и Trim () ... если ваш ввод НЕ имеет десятичной точки, вы можете получить неправильные числа. Например, ("1000"). TrimEnd ('0') = 1.
Этот обходной путь исправит эту проблему:
string Trimmed = (Untrimmed.IndexOf('.')>=0) ? Untrimmed.TrimEnd('0') : Untrimmed;
Конечно, использование "." для десятичных чисел специфична культура - некоторые культуры используют запятые. Если вы пытаетесь встроить понимание культуры, вам нужно использовать System.Threading.Thread.CurrentThread.CurrentCulture.NumberDecimalSeparator вместо литерала '.' характер.
Редактировать: Исходя из вашего отредактированного вопроса выше, RegEx является правильным ответом. Что-то вроде:
Trimmed = RegEx.Replace(Untrimmed, "(\d\.\d*[1-9])0+([^\d]|$)", "$1$2");
([1-9] выше - мой ленивый способ избежать \ d жадности и захвата нулей, вероятно, есть более простой способ сделать это.)