Я должен преобразовать double в строку по следующим правилам:
Если позиция десятичной точки равна -1 (или другому несуществующему значению, означающему «Авто»), дробная часть числа должна выводиться со всеми значащими цифрами (все нули в конце должны быть обрезаны). Если double является целым числом, его дробная часть не должна выводиться вообще. Например, цифры = -1: 1029.0 -> 1 029, 1029.123456789 -> 1 029.123456789.
Если позиция десятичной точки равна или больше 0, дробная часть числа должна выводиться с заданным количеством цифр. Например, цифры = 2: 1029,0 -> 1 029,00, 1029,123456789 -> 1 029,12
Преобразование должно зависеть от культуры (точка или запятая как десятичная точка, запятая или пробел как разделитель групп и т. Д.).
У меня есть код для задания:
var _Culture = CultureInfo.CreateSpecificCulture("en-US");
object sourceValue = 1029.0;//.123456789;
int digits = -1; // 2;
var formatter = "G";
if (digits != -1)
{
_Culture.NumberFormat.NumberDecimalDigits = digits;
formatter = "N";
}
var sourceValueAsFloat = (double)sourceValue;
var s = sourceValueAsFloat.ToString(formatter, _Culture);
Есть ли другой форматер (кроме "N" или "G"), который я могу использовать вместо этого? Или, может быть, я могу использовать «N» / «G» по-другому?
С уважением,