2016-04-26 17 views
1

Zum Beispiel in einer Konsolenanwendung I den folgenden Code haben:Double oder Integer in String?

Console.Writeline("Enter function"); 
string function = Console.Readline(); 

und dann function wird definiert als:

function = "ceil(5.0)"; 

dann würde ich die Variable als Doppel definieren. Aber was, wenn der Benutzer würde ein:

function = "ceil(5)"; 

Wie kann ich einen Scheck tun, wenn es eine doppelte oder eine ganze Zahl gefüllt ist, damit ich jetzt, wie diese Variable zu speichern. Und wenn es auch gleich ist, aber dann mit negativen Zahlen, habe ich schon Regex versucht, aber vielleicht habe ich es nicht richtig gemacht. Irgendwelche Ideen?

+1

Den Code ändern, der die vom Benutzer eingegebene Funktion analysiert, um das Vorhandensein eines Dezimalpunkts zu erkennen? Wenn Sie in der Lage sind, einen Funktionsparser zu schreiben, sollte das sicher ein Kinderspiel sein? – Heinzi

+0

@Heinzi Danke, ich werde das untersuchen, aber wenn es zum Beispiel 5.0 ist, wird es als ein Doppel erkannt, aber es ist tatsächlich eine ganze Zahl, wenn Sie wissen, was ich meine –

+0

Ich weiß, was du meinst, aber ich würde empfehlen, * noch * Verwenden Sie in diesem Fall ein Double: Das tun die meisten Programmiersprachen, wenn Sie ein Literal wie '5.0' verwenden, und es wäre verwirrend, diese Konvention zu ändern. – Heinzi

Antwort

3

Bei Gleitkommazahlen ist n% 1 == 0 normalerweise die Möglichkeit, zu überprüfen, ob etwas über den Dezimalpunkt hinausgeht.

public static void Main (string[] args) 
{ 
    decimal d = 3.1M; 
    Console.WriteLine((d % 1) == 0); 
    d = 3.0M; 
    Console.WriteLine((d % 1) == 0); 
} 

Ausgang:

False //is a double 
True //is a integer 

Weitere Informationen finden Sie auf dieser Seite zu finden: How to determine if a decimal/double is an integer?

+1

Ich denke, dass der Fragesteller es andersherum möchte, überprüfen Sie, ob String doppelt oder ganzzahlig ist. Sie überprüfen, ob ein Double eine ganze Zahl ist oder Dezimalzahlen enthält. – RvdK

0

Wenn Sie es mit Regex tun möchten, können Sie für die Funktion überprüfen könnten + Klammer + Wert + closing_parenthesis. Überprüfen Sie dies als Ausgangspunkt:

Bitte beachten Sie, dass Regex negative Zahlen erlaubt. Wenn Sie das nicht möchten, entfernen Sie die \ -? Teil.

Verwandte Themen