Bonjour M.Hulot,
da das Display nur für Ergebnisse gedacht ist und Rechnungen nur im Editfield eingegeben werden, kannst du mit -1*dip oder dip*-1 das Ergebnis negativ machen um damit weiter zu rechnen.
aber danke für den indirekten Hinweis auf ein sehr wichtiges, aber auch kompliziertes user-interface-Problem bei Taschenrechnern:
wie soll das - Zeichen vor Zahlen gedeutet werden? - Und vor allem: Welche Auswirkungen hat die konsequente Anwendung dieser Festlegung für den User?
Bei 2line... habe ich noch versucht einen Mittelweg zu gehen, deshalb wird dort zwar -(-1) und --1 zu 1 , aber 1*-(-1) oder 1*(-(-1)) liefert schon Error, da die Grenzen eindeutiger Syntax erreicht sind.
Ich habe mich bei 3line... konsequent für eine andere Variante entschieden: Im Display erscheinen nur Ergebnisse von Rechnungen aus dem "editfield". In diesem Editfield wiederum sollen nur mathematisch korrekte Rechnungen einschließlich der Klammerregeln stehen und keine "Zahlumwandlungen". Das heisst doppelt negative Zahlen müssen eigentlich als z.B. als -1*-1 eingegeben werden.
Zwar liefert dort noch 0-(-1) oder 0--1 jeweils 1 als Ergebnis, aber mit der "Eingabe der alleinigen Zahlenumwandlung" --1 oder -(-1) kann 3line.. nix anfangen, weil es ja keine Rechnung ist. Leider erweckt es aber fälschlicherweise mit der Display-Anzeige -1 den Eindruck, es hätte was zu rechnen gegeben.
Hier habe ich im Output-Design versagt
In der nächsten Version werde ich dieses Rechen-Verhalten entweder durch eine eine Fehlermeldung abfangen oder dem Sonderfall Zahlenumwandlung eine Subroutine widmen müssen.
Selbst heutige Taschenrechner und Tabellenkalkulationsprogramme sind hier übrigens nicht eindeutig: Probier mal -1^2 bei verschiedenen TR oder Systemen!
Ich habe misch schon so daran gewöhnt, dies vorher selbst jeweils durchzutesten, dass ich nicht daran gedacht habe, den usern auf "meine" Variante zu erläutern
Zur Klarstellung der Rechenregeln: um zu richtigen Ergebnissen zu kommen, dürfen bei 3line... nach einer Rechenoperation (+,-,* und /) nie mehr als zwei negative Vorzeichen folgen und die müssen auch noch durch Klammern getrennt werden.
nochmals danke für den Hinweis , martux