Указание длины Int, содержащего 0
-
21-12-2019 - |
Вопрос
Я хочу преобразовать строку, содержащую 5 нулей («00000»), в Int, чтобы ее можно было увеличивать.Всякий раз, когда я конвертирую строку в целое число с помощью Convert.ToInt32(), значение становится 0.Как я могу гарантировать, что целое число останется фиксированной длины после преобразования?
Я хочу иметь возможность увеличивать значение с «00000» до «00001» и т. д., чтобы значение отображалось в базе данных с таким количеством цифр вместо 0 или 1.
Если вы собираетесь проголосовать против вопроса, минимум, что вы можете сделать, это оставить отзыв о том, почему вы это сделали...
Решение
Целое число есть целое число.Больше ничего.
Итак int
у вас есть нулевое значение, нет возможности добавить какие-либо метаданные «длины» или что-то подобное.
Полагаю, на самом деле вы хотите, чтобы в какой-то момент появился string
снова.Ты хочешь это string
для представления вашего числа, но с 5 символами и ведущими нулями.
Вы можете добиться этого, используя:
string s = i.ToString("00000")
РЕДАКТИРОВАТЬ
Вы говорите, что хотите, чтобы числа отображались в вашей БД именно так.Спроси себя:
Действительно ли так должно быть в БД или достаточно форматировать числа сразу после их чтения из базы?
В зависимости от этого отформатируйте их (как показано выше) либо при записи, либо при чтении из БД.Конечно, в первом случае потребуется больше места для хранения, и вы не сможете использовать SQL или что-то подобное для выполнения арифметических операций!
Другие советы
Целое число не имеет длины, это чисто численное значение.Если вы хотите сохранить длину, вы должны хранить информацию о длине где-то еще.
Вы можете обернуть значение в объекте, который сохраняет длину в свойстве.Пример:
public class FormattedInt {
private int _value, _length;
public FormattedInt(string source) {
_length = source.Length;
_value = Int32.Parse(source);
}
public void Increase() {
_value++;
}
public override string ToString() {
return _value.ToString(new String('0', _length));
}
}
.
Использование:
FormattedInt i = new FormattedInt("0004");
i.Increase();
string s = i.ToString(); // 0005
. Как говорит Олидис выше, генеракодицетагкод - это просто номер.Он не указывает формат отображения .Я не рекомендую хранить его в магазине с нулями в базе данных.Это генеракодицетагкод, храните его как генеракодицетагкод.
для целей отображения, в приложении, отчет, что угодно, затем подушеруйте нулям.
string s = i.ToString("00000");
.