2016-10-10 8 views
-7

Wie konvertiere ich im folgenden Code die Zeichenfolge von INT32 bis INT64 stattConvert String zu INT64

public static int TransferClient(string NRIFActual, string NRIFNuevo) 
    { 
     int nResult = 0; 
     try 
     { 
      nResult = ws.TransferClient(int.parse(NRIFActual), int.Parse(NRIFNuevo)); 
     } 
     catch (System.Net.WebException ex) 
     { 
      throw new Exception(ex.Message); 
     } 
     return nResult; 
    } 

Beachten Sie, dass ich die gleichen Variablennamen muß, weil sie in einem Web-Service verwendet wird, ist es eine Möglichkeit, nur wie INT.parse() in INT64 konvertieren?

+6

Was ist der String, den Sie an 'int.Parse()' übergeben? –

+1

Wenn es entweder zu groß oder zu klein ist, können Sie stattdessen "long", "decimal", "double" oder "BigInteger" verwenden (abhängig von Ihren Anforderungen). –

+5

Die maximale Größe für einen Standard-Int ist '2.147.483.647'. Wenn Sie eine größere Zahl wünschen, müssen Sie eine größere Datengröße verwenden ("long" wäre der naheliegende Vorschlag). Dies gilt auch für den Dateityp Ihrer Datenbank (eventuell mit einem 'bigint'). – musefan

Antwort

-1

Wenn Sie sagen, dass Sie 9 Zahlen akzeptieren und es zu 10 Zahlen ändern möchten, nehme ich an, dass Sie meinen, dass die Zahl 9 Ziffern lang ist, und Sie möchten es 10 Ziffern haben.

Die maximale Größe einer 32-Bit-Ganzzahl beträgt ~ 2,1 Milliarden. Sie könnten stattdessen eine long verwenden, die eine 64-Bit-Ganzzahl mit einem Höchstwert von 9.223.372.036.854.775.807 ist.

+0

Danke, ich werde versuchen, int64 zu verwenden – Hans

+0

Kann der Downvoter bitte den Grund für den Downvote erklären, damit ich die Antwort verbessern kann? – user1666620

1

Sie erhalten wahrscheinlich OverflowException, da der Wert, den ein Int (Int32) speichern kann, zwischen -2.147.483.648 und 2.147.483.647 liegt.

1) Vergewissern Sie sich, dass die eingegebene Zeichenfolge korrekt ist.

2) Wenn die Benutzer nicht die Nummer dieses hohe try einsetzen sollte eine Validierung an den Eingang (Textfeld)

3) Wenn der Benutzer größere Zahlen einfügen wird hinzufügen (können) sollten Sie einen Typ verwenden, kann einen höheren Wert speichern - wenn nicht> lang (Int64) sollte (Der Bereich ist -9.223.372.036.854.775.808 bis 9,223,372,036,854,775,807) genug sein, gehen größer -> Sie erhalten eine Liste mit C# Typen finden Sie hier: https://msdn.microsoft.com/ro-ro/library/ya5y69ds.aspx

Tipp: verwenden Sie TryParse Methode anstelle von Parse (für jeden Typ, den Sie verwenden). Diese Methode gibt ein Bool zurück, das angibt, ob die Konvertierung erfolgreich war oder fehlgeschlagen ist, und die tatsächliche Konvertierung im Ausgabeparameter. Dies wird die Ausnahmebehandlung viel einfacher machen.

bearbeiten nach Hans Kommentar:

Um die Lösung einfach zu halten und nicht in einem anderen Themen tauchen Sie sollten etwas tun:

string input = "92233720368547758071"; 
long result; 
if (!long.TryParse(input , out result)) 
    /*error handling */ 
else 
    /*Continue the flow of your program*/ 

* Die Eingabe kann von überall kam. Dies ist nur zum Beispiel Zweck.

+0

Könnten Sie ein Beispiel schreiben, wie Sie in eine Zeile (int64) konvertieren? weil der Code den Variablennamen in Zeilen als int.Parse (NRIFActual) hat – Hans