Seite 1 von 1

Probleme mit Null

Verfasst: Sonntag 20. August 2023, 11:10
von Pitwheazle
In meinen neuen Aufgaben zu negativen Zahlen, ist es jetzt möglich, dass als Ergebnis Null herauskommt. Die wird aber von meinem Kontrollalgorithmus nicht akkzeptiert. Bei der Aufgabenstellung wird das Ergebnis (wie alles andere auch ) in der Tabelle "Protokoll" gespeichert. bei den negativen Zahlen kommen nur entweder ganze Zahlen vor oder Kommazahlen mit Zehnteln und die schicke ich auch ans Protokoll, bei der Kontrolle wird der Wert aus dem Protokoll geholt und mit der Eingabe verglichen und da kommt der Wert 0E-7 zurück und dieser ist angeblich nicht gleich 0.
Hier wird der Wert an das Protokoll geschickt:

Code: Alles auswählen

            print("Ergebnis: ", ergebnis)
            protokoll = Protokoll.objects.create(
                user = user, titel = titel, sj = user.sj, hj = user.hj, kategorie = kategorie, text = text, pro_text = pro_text, variable = variable, frage = frage, einheit = einheit, 
                anmerkung = anmerkung, wert = ergebnis, loesung = lsg, hilfe_id = hilfe_id, parameter = parameter, wertung = "a", typ = typ, typ2 = typ2, aufgnr = zaehler.aufgnr,        
            ) 
... hier wird er wieder ausgelesen und an die Kontrolle geschickt:

Code: Alles auswählen

                print("P_Wert: ",protokoll.wert)
                wertung, rueckmeldung = kontrolle(eingabe, protokoll.wert, protokoll.loesung, protokoll.id)
und hier kontrolliert:

Code: Alles auswählen

                print("P_Wert: ",protokoll.wert)
                wertung, rueckmeldung = kontrolle(eingabe, protokoll.wert, protokoll.loesung, protokoll.id)
Die Ausgabe:

Code: Alles auswählen

Ergebnis:  0.0
[20/Aug/2023 12:03:49] "GET /negative-zahlen/ HTTP/1.1" 200 2320
P_Wert:  0E-7
Wert: 0E-7  ?=  0
False
und mein Feld im Protokoll:

Code: Alles auswählen

    wert = models.DecimalField('Wert', null=True, max_digits=20, decimal_places=7)

Re: Probleme mit Null

Verfasst: Sonntag 20. August 2023, 11:21
von Sirius3
Bei mir ist der Wert 0:

Code: Alles auswählen

In [1]: import decimal

In [2]: wert = decimal.Decimal("0E-7")

In [3]: str(wert)
Out[3]: '0E-7'

In [4]: wert == 0
Out[4]: True

Re: Probleme mit Null

Verfasst: Sonntag 20. August 2023, 11:33
von Pitwheazle
Eieiei, das Problem war nicht der Wert, der vom Protokoll zurückgegeben wurde, sondern der aus der Eingabeformular:

Code: Alles auswählen

        print("Wert:", wert, " ?= " , eingabe)
        print(decimal.Decimal(eingabe) == wert)
Ausgabe:

Code: Alles auswählen

Wert: 0E-7  ?=  0
True
Jetzt klappt es! vielen Dank !