Come posso convertire i dati da stringa a long in C #?
Ho dati
String strValue[i] ="1100.25";
ora lo voglio dentro
long l1;
Come posso convertire i dati da stringa a long in C #?
Ho dati
String strValue[i] ="1100.25";
ora lo voglio dentro
long l1;
Risposte:
Questa risposta non funziona più e non riesco a trovare niente di meglio delle altre risposte (vedi sotto) elencate qui. Si prega di rivederli e votarli.
Convert.ToInt64("1100.25")
Firma del metodo da MSDN:
public static long ToInt64(
string value
)
Se vuoi ottenere la parte intera di quel numero, devi prima convertirlo in un numero mobile e poi lanciarlo in long.
long l1 = (long)Convert.ToDouble("1100.25");
Puoi usare la Math
classe per arrotondare il numero come preferisci, o semplicemente troncare ...
FormatException
se lo esegui sull'input specificato.
Puoi anche usare 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)
Anche se l'esempio che hai fornito non è un numero intero, non sono sicuro del motivo per cui lo desideri così a lungo.
Non sarai in grado di convertirlo direttamente in lungo a causa del punto decimale, penso che dovresti convertirlo in decimale e poi convertirlo in lungo qualcosa del genere:
String strValue[i] = "1100.25";
long l1 = Convert.ToInt64(Convert.ToDecimal(strValue));
spero che questo ti aiuti!
long è rappresentato internamente come System.Int64 che è un intero con segno a 64 bit. Il valore che hai preso "1100.25" è in realtà decimale e non intero, quindi non può essere convertito in long.
Puoi usare:
String strValue = "1100.25";
decimal lValue = Convert.ToDecimal(strValue);
per convertirlo in valore decimale
long l1 = Convert.ToInt64(strValue);
Dovrebbe bastare.
Puoi anche farlo usando Int64.TryParse
Method. Restituirà "0" se è un valore stringa qualsiasi ma non ha generato un errore.
Int64 l1;
Int64.TryParse(strValue, out l1);
Puoi creare la tua funzione di conversione:
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;
}
Può essere ulteriormente migliorato: