2010-06-26 14 views
5

In IronPython gibt es eine Möglichkeit, den Ausdruck, der Integer-Werte enthält, als Gleitkomma zu berechnen. Zum Beispiel möchte ich den AusdruckErzwingen von Fließkommaberechnungen

1/3 

als

1./3. 

mit dem Ergebnis ausgewertet werden 0.333 ...

Ich brauche dies eine einfache Laufzeit Ausdruck Rechner zu machen in einem C# -Projekt mittels IronPython. Ich kann Benutzer nicht zwingen, Ausdrücke mit Nachkommastellen einzugeben.

+0

Sie verwenden 'eval' auf diesen Ausdrücken? (Wenn nicht, gut - es ist eine Art unsichere Art, einen Rechner zu implementieren) –

Antwort

11

können Sie zwingen, eine Gleitkomma-Division wie jeder von ihnen, egal, ob etwas von __future__ importiert wird:

print val1/(val2 + 0.0) 
print (val1 + 0.0)/val2 
print float(val1)/val2 
print val1/float(val2) 
+0

Großartig! Genau das habe ich gebraucht. Leider kann ich nicht alle richtigen Antworten als akzeptiert markieren. Also werde ich jedem +1 geben und diesen akzeptieren. – Max

2

Wenn Ihre Benutzer trotzdem Werte eingeben, werden die Werte vermutlich in int s konvertiert. Also wandle sie einfach in float um.

val1 = float(raw_input()) 
val2 = float(raw_input()) 
print val1/val2 
11
from __future__ import division 

print 1/3 
print 1 // 3 
+0

Beat mich um etwa eine Sekunde. +1 – None

+0

Ich widerstehe dem Downvote, weil du richtig bist, aber die Tatsache, dass die Python-Typen entschieden haben, die Semantik eines Grundrechenartikels nach so vielen Leuten zu ändern, hatte schon so viel Code geschrieben - es erscheint mir immer noch wahnsinnig. Ich weiß nicht, wie gut IronPython die Python-Version verfolgt, aber diese unangenehme Überraschung wird vielen Leuten passieren, wenn sie von Python 2 zu Python 3 wechseln. Viele Berechnungen mit genau definiertem Rundungsverhalten werden ohne Zweifel stillschweigend enden , damit vertrauenswürdige Apps falsche Ergebnisse liefern. – Steve314

+0

@ Steve314: Und? Python 3 ist kaum neu. Wenn die Dokumentation von Drittanbietern nicht auf dem neuesten Stand ist, können die Python-Entwickler nichts dagegen tun. –

Verwandte Themen