Zwingen, um floating-point-Berechnungen
In IronPython gibt es eine Möglichkeit zu zwingen, den Ausdruck mit integer-Werte berechnet werden als floating point. Zum Beispiel, ich möchte den Ausdruck
1/3
bewertet werden als
1./3.
mit dem Ergebnis 0.333...
Ich brauche diese, um ein einfaches run-time-Ausdruck-Rechner in ein C# Projekt mit Hilfe von IronPython. Ich kann mich nicht zwingen die Benutzer zur Eingabe Ausdruck mit nachfolgenden Dezimalstellen.
Verwenden Sie
eval
auf diese Ausdrücke? (Wenn nicht, gut - es ist irgendwie eine sichere Methode zur Implementierung eines Rechner -)InformationsquelleAutor Max | 2010-06-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie zwingen, eine floating point division wie alle diese, egal, wenn etwas importiert wird
__future__
:InformationsquelleAutor pts
Ich bin gegen die downvote da Sie bist korrekt, aber die Tatsache, dass die Python-Jungs beschlossen, die änderung der Semantik eines elementaren arithmetischen operator, nachdem so viele Menschen geschrieben hatte, so viel code schon - es scheint immer noch verrückt für mich. Ich weiß nicht, wie gut IronPython tracks die Python-version, aber diese böse überraschung passiert, eine Menge von Menschen, wie Sie bewegen sich von Python 2 zu Python 3. Eine Menge von Berechnungen, die mit genau definierten Rundung Verhalten wird ohne Zweifel schweigend Pause, so vertrauenswürdigen apps geben falsche Ergebnisse.
Und? Python 3 ist kaum neu. Wenn third-party-Dokumentation ist nicht up-to-date " ist, es gibt nichts, was die Python-Entwickler tun kann.
was ist mit all den apps geschrieben für Python 2, oder für diese Angelegenheit Python 1, die noch nicht berührt worden war, für Jahre? Wir Leben in einer Welt, in der Cobol-und Fortran-code, geschrieben in den siebziger Jahren noch in Gebrauch ist. Wenn es nicht kaputt ist, es ist bekannt, dass Sie sollten nicht zu beheben. Das ist es, was ich meine mit "vertrauenswürdigen Anwendungen". Aber dann, jemand installiert eine neue Python-version, und plötzlich sind die grundlegenden arithmetischen Operatoren nicht tun, was Sie gestern getan hat, und, die entscheidende finanzielle Kalkulation für einen wichtigen Vertrag oder das load-Berechnung für eine Brücke, leise, gibt ein Falsches Ergebnis.
Der Punkt ist, dass die Python-Entwickler entschied so ändern Sie die Semantik der grundlegenden arithmetischen operator. Es war immer offensichtlich, dass dies zu Problemen führen. Die Python-Entwickler richten Sie einfach Ihre Ausreden, warum Sie nicht verantwortlich gemacht werden - "es gibt viele Warnung für alle, die verbringt Ihr Leben zum prüfen auf mögliche semantische änderungen in Ihren Sprachen", "wenn Sie die spezielle Python 2.6 option Sie werden wahrscheinlich sagen, Sie über das problem" usw.
InformationsquelleAutor Ignacio Vazquez-Abrams
Wenn die Benutzer Werte eingeben können trotzdem, dann vermutlich Sie konvertieren die Werte
int
s. So einfach konvertieren Sie Sie infloat
statt.InformationsquelleAutor Daniel Roseman