VB, Konvertieren Sie die long-String-Zahl in Integer
Okay, also ich bin nicht gerade sehr orientiert, wenn es um die Funktionen, erhältlich in VB.
Ich habe einen string, der das aktuelle Datum und die Zeit und Notwendigkeit für die Konvertierung in eine ganze Zahl, so kann ich vergleichen Sie die Zeit.
Dim my_str as String = "201308281110"
Dim my_int as Integer = Convert.ToInt32(my_str)
Kann ich nicht tun, die mit dieser Zeichenfolge offenbar. Weil ich denke, es ist zu lang für die 32-bit-Ganzzahl. Alle anderen convertions, die ich versucht habe auch nicht. Dass darunter "ToInt64", "Int", "CInt"... Also, keine Ahnung, wie zu konvertieren, das mehr string in einen integer?
- Ich fand heraus, von einigen Tests, dass ein integer nicht wirklich eine Nummer mehr als 10 Ziffern! Also, was ist ein weiterer Datentyp für lange Ganzzahlen, dann ist die neue Frage? EDIT: Keine Nachkommastellen, wenn möglich
- Was ist falsch mit Dezimalzahlen?
- Warum konvertieren numerische überhaupt? Der ganze Grund, warum Datum/ - Zeiten sind in der Regel formatiert ist, so dass Sie nur tun, einfache string-Vergleiche, die auf Ihnen. Ich sage nicht, dass es unbedingt eine gute Idee zu formatieren, dass Sie wie, aber wie lange sind Sie bereits formatiert ist, dass die Art und Weise, Sie könnten genauso gut vergleichen als strings.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum Sie nicht einfach nutzen Sie einfach
Date
? Vergleichen SieDates
mit einander, so gibt es keine Notwendigkeit, verwenden Sie eine ganze Zahl für den Vergleich.Normalerweise würde ich das nicht tun. Mehrere richtige Antworten sind schon gegeben worden, aber da Sie noch lernen VB.NET ich fühle mich wie eine genauere Antwort wäre hilfreich. Also meine Antwort wiederholen, was andere schon gesagt haben.
Den
Int64
undDecimal
Typen sind in der Tat groß genug, um halten eine Reihe so. Ich vermute, dass der Grund, warumConvert.ToInt64
war nicht für Sie arbeiten, weil Sie versuchen, speichern Sie die Ergebnisse in eineInteger
variable, so:Den Grund dafür nicht, dass ist nicht, weil
ToInt64
funktioniert nicht. Dieser Teil der Aussage ist eigentlich gut funktioniert. Der Teil, der fehlschlägt, ist, wo Sie bei der Zuordnung dermy_int
variable auf den Wert.my_int
ist deklariert als einInteger
. DieInteger
geben VB.NET ist eigentlich nur ein pseudonym fürInt32
. In anderen Worten, es ist eigentlich die gleiche Sache ist, wie dieses:Um das problem zu beheben, müssen Sie ändern Sie den Typ der
my_int
variableInt64
so dass es groß genug sein wird, zu halten, der Wert wird zurückgegeben, die von derToInt64
Funktion.In VB.NET,
Long
ist das pseudonym fürInt64
, so dass in den meisten Fällen, das ist, was Sie verwenden sollten. Wenn Sie gehen, umLong
jedoch mit derToInt64
Methode ist ein wenig hässlich. Es wäre einfacher zu Lesen, benutzen Sie einfachLong
auf beiden Seiten der Zuweisung wie dieser:Auch das macht der code geringfügig sicherer, denn es wird immer noch funktionieren, auch wenn die Größe der
Long
änderungen in der Zukunft (jedoch unwahrscheinlich ist).Den
Decimal
Typ wäre auch groß genug für den Wert, aber es wäre weniger effizient als die VerwendungLong
, so würde ich es nicht empfehlen.Dies wirft die Frage auf, jedoch "Warum tust du das?" Wenn Sie brauchen, um zu vergleichen, den Wert zu einem anderen
Long
variable, würde es Sinn machen, das zu tun, aber dann wie hast du das andereLong
Wert? Wenn Sie konvertieren beideLong
Werte von strings, dann ist es nicht sinnvoll, das zu tun. Der string ist bereits formatiert, in einer Weise, wo es leicht sein kann, im Vergleich zu anderen Saiten der selben format. Zum Beispiel:Wenn, jedoch, Sie brauchen, um zu analysieren, den Wert zu Lesen, seine einzelnen Teile (z.B. Datum, Uhrzeit, Jahr, Monat, Stunde), macht es mehr Sinn, konvertieren Sie den Wert einer
DateTime
Wert. Oder, wenn Sie brauchen, um zu vergleichen, den string-Wert zu einem anderen Wert, was bereits gespeichertDateTime
variable, dann, in diesem Fall, es macht auch Sinn, konvertieren Sie die Zeichenfolge in eineDateTime
Wert. In VB.NET das pseudonym fürDateTime
ist einfachDate
, so dass in den meisten Fällen sollten Sie nur verwenden, wie diese:Aber
Long.Parse
funktioniert so gut wieConvert.ToInt64
da es nicht überläuft(Int32.MaxValue
2147483647):Demo
Beachten Sie, dass
Lang
ist das gleiche wieInt64
.var
) - Schlüsselwort. Also ich weglassen, die geben, wenn es offensichtlich ist.