Ich versuche, ein Programm zu finden, das Noten aus der Benutzereingabe berechnet. Ich versuche auch, eine Grenze dafür zu setzen, wie hoch oder niedrig die Benutzereingabe sein kann (d. H. 0 & lt; = oder & gt; = 100). Aber wenn ich Dezimalstelle benutze, gibt es mir den Fehler "Operator '& lt;' kann nicht auf Operanden vom Typ 'dezimal' und 'doppelt' "
angewendet werden %Vor%Es gibt mindestens vier Probleme, die ich in Ihrem Code bemerkt habe.
Zuerst sollten Sie, wie bereits erwähnt, M
suffix verwenden, um dem C # -Compiler mitzuteilen, dass es sich bei einem akzeptierten Vergleich um ein decimal
handelt:
Aber zweitens , verwenden Sie ||
anstelle von |
, weil Sie OR
operation ausführen möchten, nicht Bitwise-OR
Und drittens finde ich ziemlich wichtig für Sie, das zu wissen: Sie würden nicht decimal
-Datentyp für das Prüfzeichen brauchen (es sei denn, Ihr Prüfungszeichen kann das Format 99.12345678901234556789012345 haben - was ziemlich unmöglich ist).
decimal
wird normalerweise für Zahlen verwendet, die eine sehr hohe Genauigkeit erfordern (z. B. money
Berechnung in der Bank) bis zu einer Genauigkeit von mehr als 16 Stellen. Wenn Ihr Prüfungszeichen dies nicht benötigt, verwenden Sie nicht decimal
, es ist Overkill . Verwenden Sie einfach double
oder int
oder float
für Ihre Exams
und Sie sind sehr wahrscheinlich auf dem richtigen Weg.
Viertens über Ihre Fehlerbehandlung ist dies eine falsche Vorgehensweise:
%Vor%aus zwei Gründen:
Exam_1
befindet sich außerhalb des Blocks (es gibt nicht {}
Klammer) if
, während Sie while
verwenden sollten
Dies ist der richtige Weg:
%Vor%In C # bedeutet Einrücken nicht wie bei Python "Scoping".
Bei Dezimalzahlen müssen Sie dem Wert "M" Suffix hinzufügen, um dem Computer mitzuteilen, dass es sich um eine Dezimalzahl handelt. Andernfalls wird der Computer es als Doppel betrachten.
deinDezimal & lt; 98,56M;
Wie schon andere darauf hingewiesen haben. Um einen decimal
-Typ mit den Operatoren größer als oder kleiner als zu vergleichen, müssen Sie ihn mit einem anderen decimal
-Typ vergleichen. Um eine Literalzahl als Dezimalzahl zu deklarieren, ist das Suffix M
oder m
erforderlich. Hier ist die MSDN für den decimal
-Typ als Referenz.
Tags und Links .net c# comparison