Я пытаюсь преобразовать числа в форме 123456 в 123,456, которые я нахожу достаточно легко, используя метод .NET ToString() с пользовательским форматом N0.Oddity with ToString() форматирование пользовательского номера
Однако в одном случае данных я получаю странные форматы при использовании этого метода.
В этом случае я динамически генерирую DataTable для таблицы ввода для проверки кода.
DataTable dt = new DataTable();
dt.Columns.Add("Cases", typeof(Int32));
Например, мои данные выглядят так, как только применяется форматирование.
-------------------------------------------- | Cases | 2495 | 3937 | 3207 | 4173 | 4265 | --------------------------------------------
Хотелось бы, чтобы это выглядело так.
------------------------------------------------- | Cases | 2,495 | 3,937 | 3,207 | 4,173 | 4,265 | -------------------------------------------------
Я пытаюсь форматировать его, используя код, подобный этому.
output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("N0");
(Примечание: Причина странного форматирования, потому что я беру DataTable и перенося его к другому DataTable.)
Используя выше форматирование я теперь получить следующие данные возвращены.
-------------------------------------------------------------------------- | Cases | 01/02/0495 | 01/03/0937 | 01/03/0207 | 01/04/0173 | 01/04/0265 | --------------------------------------------------------------------------
Затем я попробовал это один десятичную точку с помощью:
output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("N01");
Который дал мне следующий результат.
------------------------------------------------------ | Cases | 2495.0 | 3937.0 | 3207.0 | 4173.0 | 4265.0 | ------------------------------------------------------
Это уже путало меня, потому что оно принимает факт, что число может быть отформатировано таким образом.
Следующее, что я пробовал, это разные способы форматирования строк так.
output.Rows[r][c] = string.Format("{0:N0}", input.Rows[c - 1][r + 1]);
output.Rows[r][c] = Convert.ToInt32(input.Rows[c - 1][r + 1]).ToString("#,##0");
Ни один из них не дает формат номера, как бы я хотел. Может ли кто-нибудь посоветовать, где я ошибаюсь? Это так просто, что я пропустил это?
К сожалению, это не так в этом примере, потому что я генерирую входной DataTable в качестве примера для проверки кода.Поле в этом случае определяется dt.Columns.Add («Случаи», typeof (Int32)); с которым я буду обновлять свой вопрос. –
Это тот случай? Я не могу хранить форматированные данные в DataTable? Если это так, то почему я смог сделать это для других DataTables? Что я делаю, чтобы принимать неформатированные данные, форматируя их, а затем перенося на новый DataTable. Это первый пример, который не сработал для меня. –
Хорошо, но если вы хотите сохранить форматированные данные, обязательно сообщите ему, что столбцы являются строками. В противном случае это может сделать (неверные) предположения ... –