Я столкнулся с ситуацией, которая, по моему мнению, находится за пределами того, что вы можете делать с помощью строк пользовательского формата.десятичная строка пользовательского формата с фиксированной точностью и отсутствием периода
Но код, который я написал, настолько груб, что я думал, что все равно спрошу.
Что мне нужно для десятичного будет отображаться либо в виде 6 или 7 цифр строки, например:
number = 12345.67M
(optional)
tenthousands thousands hundreds tens ones tenths hundredths
1 2 3 4 5 6 7
Вот код, который я написал для достижения этой цели:
public static string ConvertDecimalToString(decimal easting, int length)
{
var formatString = "{0:0000.00}";
var numberAsString = string.Format(formatString, easting);
var removePeriod = numberAsString.Replace(".", "");
if (removePeriod.Length > length)
{
return removePeriod.Substring(removePeriod.Length - length, length);
}
else
{
return removePeriod.PadLeft(length, '0');
}
}
Ожидаемые входы и выходы:
Input Output(6) Output(7)
912345.67M 234567 1234567
12345.67M 234567 1234567
1234.56M 123456
1234.5M 123450
1234M 123400
234M 023400 0023400
Итак, каков ваш ожидаемый результат для ввода = 12345.67M и input = 1234.56M? –
Почему, по-вашему, пользовательские форматированные строки не будут работать? – Tim
В чем причина «234567» (первый результат (6)). то есть удаление (очень) значащих цифр? – DrKoch