Como eu poderia converter dados de string em long em c #?
Eu tenho dados
String strValue[i] ="1100.25";
agora eu quero dentro
long l1;
Como eu poderia converter dados de string em long em c #?
Eu tenho dados
String strValue[i] ="1100.25";
agora eu quero dentro
long l1;
Respostas:
Esta resposta não funciona mais e não consigo encontrar nada melhor do que as outras respostas (veja abaixo) listadas aqui. Por favor, revise e vote neles.
Convert.ToInt64("1100.25")
Assinatura de método do MSDN:
public static long ToInt64(
string value
)
Se você quiser obter a parte inteira desse número, primeiro deve convertê-lo em um número flutuante e depois converter em longo.
long l1 = (long)Convert.ToDouble("1100.25");
Você pode usar a Math
classe para arredondar o número como quiser ou apenas truncar ...
FormatException
se você executá-lo na entrada especificada.
Você também pode usar long.TryParse
e long.Parse
.
long l1;
l1 = long.Parse("1100.25");
//or
long.TryParse("1100.25", out l1);
http://msdn.microsoft.com/en-us/library/system.convert.aspx
l1 = Convert.ToInt64(strValue)
Embora o exemplo que você deu não seja um número inteiro, não tenho certeza por que você deseja que seja longo.
Você não poderá convertê-lo diretamente para longo por causa do ponto decimal, acho que você deve convertê-lo em decimal e, em seguida, convertê-lo em longo algo assim:
String strValue[i] = "1100.25";
long l1 = Convert.ToInt64(Convert.ToDecimal(strValue));
espero que isto ajude!
long é internamente representado como System.Int64, que é um inteiro assinado de 64 bits. O valor que você obteve "1100,25" é realmente decimal e não inteiro, portanto, não pode ser convertido para longo.
Você pode usar:
String strValue = "1100.25";
decimal lValue = Convert.ToDecimal(strValue);
para convertê-lo em valor decimal
long l1 = Convert.ToInt64(strValue);
Isso deve resolver.
Você também pode fazer usando o Int64.TryParse
Método. Ele retornará '0' se for qualquer valor de string, mas não gerou um erro.
Int64 l1;
Int64.TryParse(strValue, out l1);
Você pode criar sua própria função de conversão:
static long ToLong(string lNumber)
{
if (string.IsNullOrEmpty(lNumber))
throw new Exception("Not a number!");
char[] chars = lNumber.ToCharArray();
long result = 0;
bool isNegative = lNumber[0] == '-';
if (isNegative && lNumber.Length == 1)
throw new Exception("- Is not a number!");
for (int i = (isNegative ? 1:0); i < lNumber.Length; i++)
{
if (!Char.IsDigit(chars[i]))
{
if (chars[i] == '.' && i < lNumber.Length - 1 && Char.IsDigit(chars[i+1]))
{
var firstDigit = chars[i + 1] - 48;
return (isNegative ? -1L:1L) * (result + ((firstDigit < 5) ? 0L : 1L));
}
throw new InvalidCastException($" {lNumber} is not a valid number!");
}
result = result * 10 + ((long)chars[i] - 48L);
}
return (isNegative ? -1L:1L) * result;
}
Pode ser melhorado ainda mais: