Operator '' kann nicht auf Operanden vom Typ 'dezimal' und 'doppelt' angewendet werden

8

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%     
Abdulhamid 08.03.2016, 03:06
quelle

3 Antworten

13

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:

%Vor%

Aber zweitens , verwenden Sie || anstelle von | , weil Sie OR operation ausführen möchten, nicht Bitwise-OR

%Vor%

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:

  1. Ihr Exam_1 befindet sich außerhalb des Blocks (es gibt nicht {} Klammer)
  2. Sie verwenden if , während Sie while verwenden sollten

Dies ist der richtige Weg:

%Vor%

In C # bedeutet Einrücken nicht wie bei Python "Scoping".

    
Ian 08.03.2016, 03:42
quelle
1

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;

    
Isuru Rangana 08.03.2016 03:13
quelle
1

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.

%Vor%

Hier ist eine .NET-Geige mit dem Update.

    
David Pine 08.03.2016 03:42
quelle

Tags und Links