Wie kann ich Daten in C # von String zu Long konvertieren?
Ich habe Daten
String strValue[i] ="1100.25";
jetzt will ich es rein
long l1;
Wie kann ich Daten in C # von String zu Long konvertieren?
Ich habe Daten
String strValue[i] ="1100.25";
jetzt will ich es rein
long l1;
Antworten:
Diese Antwort funktioniert nicht mehr und ich kann mir nichts Besseres einfallen lassen als die anderen hier aufgeführten Antworten (siehe unten). Bitte überprüfen und stimmen Sie sie ab.
Convert.ToInt64("1100.25")
Methodensignatur von MSDN:
public static long ToInt64(
string value
)
Wenn Sie den ganzzahligen Teil dieser Zahl erhalten möchten, müssen Sie ihn zuerst in eine schwebende Zahl konvertieren und dann in long umwandeln.
long l1 = (long)Convert.ToDouble("1100.25");
Sie können Math
class verwenden, um die Zahl nach Ihren Wünschen aufzurunden oder einfach abzuschneiden ...
FormatException
wenn Sie dies auf dem angegebenen Eingang ausführen.
Sie können auch long.TryParse
und verwenden 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)
Obwohl das Beispiel, das Sie gegeben haben, keine ganze Zahl ist, bin ich mir nicht sicher, warum Sie es so lange wollen.
Sie werden es aufgrund des Dezimalpunkts nicht direkt in long konvertieren können. Ich denke, Sie sollten es in dezimal konvertieren und dann in long konvertieren, ungefähr so:
String strValue[i] = "1100.25";
long l1 = Convert.ToInt64(Convert.ToDecimal(strValue));
hoffe das hilft!
long wird intern als System.Int64 dargestellt, eine 64-Bit-Ganzzahl mit Vorzeichen. Der Wert, den Sie "1100.25" angenommen haben, ist tatsächlich dezimal und nicht ganzzahlig, daher kann er nicht in long konvertiert werden.
Sie können verwenden:
String strValue = "1100.25";
decimal lValue = Convert.ToDecimal(strValue);
um es in einen Dezimalwert umzuwandeln
long l1 = Convert.ToInt64(strValue);
Das sollte es tun.
Sie können dies auch mit Int64.TryParse
Method tun . Es wird '0' zurückgegeben, wenn es sich um einen Zeichenfolgenwert handelt, der jedoch keinen Fehler generiert hat.
Int64 l1;
Int64.TryParse(strValue, out l1);
Sie können Ihre eigene Konvertierungsfunktion erstellen:
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;
}
Es kann weiter verbessert werden: