Это соответствует приведенному примеру, но Плохо.(Я ДУМАЮ)
myDecimal.ToString("#.######")
Какие еще требования существуют?Собираетесь ли вы манипулировать значениями и показывать манипулируемые значения с этим количеством десятичных дробей?
Альтернативный ответ включает в себя рекурсивность, например так:
//use like so:
myTextbox.Text = RemoveTrailingZeroes( myDecimal.ToString() );
private string RemoveTrailingZeroes(string input) {
if ( input.Contains( "." ) && input.Substring( input.Length - 1 ) == "0" ) { //test the last character == "0"
return RemoveTrailingZeroes( input.Substring( 0, input.Length - 2 ) )
//drop the last character and recurse again
}
return input; //else return the original string
}
А если вам нужен метод расширения, тогдаэто опция
//use like so:
myTextbox.Text = myDecimal.ToString().RemoveTrailingZeroes();
private string RemoveTrailingZeroes(this string input) {
if ( input.Contains( "." ) && input.Substring( input.Length - 1 ) == "0" ) { //test the last character == "0"
return RemoveTrailingZeroes( input.Substring( 0, input.Length - 2 ) )
//drop the last character and recurse again
}
return input; //else return the original string
}
Добавлено input.Contains( "." ) &&
за комментарий от Джона Скита, но имейте в виду, что это сделает это невероятно медленным.Если вы знаете, что у вас всегда будет десятичный знак, а не регистр, такой как myDecimal = 6000;
, тогда вы можете отказаться от этого теста, или вы можете превратить его в класс и иметь несколько закрытых методов, основанных на том, содержит ли ввод десятичное число и т. Д.собирался для самого простого и "это работает" вместо Enterprise FizzBuzz