У меня есть десятичная точка в моей программе, которая может иметь завершающие нули после десятичной точки, и я хотел бы избавиться от них.Удаление любых конечных нулей из десятичного числа в C#
Я хочу сделать это, преобразовывая десятичную строку в строку и используя только подстроку, основанную на том, где найдена десятичная точка, и если содержимое после десятичной точки является только нулями. Это то, что я придумал:
string number = Convert.ToString(MyDouble);
if (number.Contains("."))//If there are trailing zeros
{
//If the numbers after the decimal point (when taken as an integer) equal 0
if(Convert.ToInt16(number.Substring(number.IndexOf("."))) == 0)
{
//Remove anything after the decimal point
number = number.Substring(0, number.Length - number.IndexOf("."));
}
}
result = Convert.ToDecimal(number);
Но это не работает. Что с этим не так?
вы можете сделать это просто с помощью пользовательского спецификатор формата (в частности, посмотрите «#» против «0») https://msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110).aspx – hatchet
Я действительно не понимаю, что это пытается выполнить. Как правило, хранить цифровые значения в памяти просто как их числовое (не строковое) представление. А затем просто примените форматировщик строк при отображении их в пользовательском интерфейсе. Почему этот разговор? – David
Можете ли вы удалить весь несвязанный код из своего образца и заменить значения на константы: 'number' является основным кандидатом? –