Especificando o comprimento de Int contendo 0s
-
21-12-2019 - |
Pergunta
Quero converter uma string que contém 5 zeros ("00000") em um Int para que possa ser incrementada.Sempre que converto a string em um número inteiro usando Convert.ToInt32(), o valor se torna 0.Como posso garantir que o número inteiro permaneça com um comprimento fixo depois de convertido?
Quero poder incrementar o valor de "00000" para "00001" e assim por diante, para que o valor apareça com tantos dígitos em um banco de dados em vez de 0 ou 1.
Se você vai votar negativamente na questão, o mínimo que você pode fazer é deixar um feedback sobre por que você fez isso...
Solução
Um número inteiro é um número inteiro.Nada mais.
Então o int
você tem valor zero, não há como adicionar metadados de "comprimento" ou similares.
Acho que o que você realmente quer é que - em algum momento - haja um string
de novo.Você quer isto string
para representar o seu número, mas com 5 caracteres e zeros à esquerda.
Você pode conseguir isso usando:
string s = i.ToString("00000")
EDITAR
Você diz que deseja que os números apareçam assim no seu banco de dados.Pergunte a si mesmo:
Realmente precisa ser assim no banco de dados ou basta formatar os números assim que você os lê no banco de dados?
Dependendo disso, formate-os (conforme mostrado acima), seja ao gravar ou ler no banco de dados.Obviamente, o primeiro caso exigirá mais espaço de armazenamento e você não poderá usar SQL ou algo semelhante para realizar operações aritméticas!
Outras dicas
Um número inteiro não tem comprimento, é puramente um valor numérico.Se quiser manter o comprimento, você deverá armazenar as informações sobre o comprimento em outro lugar.
Você pode agrupar o valor em um objeto que mantém o comprimento em uma propriedade.Exemplo:
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));
}
}
Uso:
FormattedInt i = new FormattedInt("0004");
i.Increase();
string s = i.ToString(); // 0005
Como olydis diz acima, um int
é apenas um número.Não especifica o formato de apresentação.Também não recomendo armazená-lo preenchido com zeros em um banco de dados.É um int
, armazene-o como um int
.
Para fins de exibição, no aplicativo, um relatório, qualquer que seja, preencha os zeros.
string s = i.ToString("00000");