nehme ich folgendes Ironpython-Skript haben:Gibt es in IronPython eine literale Notation für Dezimalzahlen?
def Calculate(input):
return input * 1.21
Wenn von C# mit einer Dezimalstelle genannt, liefert diese Funktion eine doppelte:
var python = Python.CreateRuntime();
dynamic engine = python.UseFile("mypythonscript.py")
decimal input = 100m; // input is of type Decimal
// next line throws RuntimeBinderException:
// "cannot implicitly convert double to decimal"
decimal result = engine.Calculate(input);
ich scheinen zwei Möglichkeiten zu haben:
Erste , Ich könnte auf der C# -Seite spielen: scheint wie ein No-Go, da ich die Präzision verlieren könnte.
decimal result = (decimal)engine.Calculate(input);
Zweite Option ist System.Decimal im Python-Skript zu verwenden: Werke, aber verpestet das Skript etwas ...
from System import *
def CalculateVAT(amount):
return amount * Decimal(1.21)
gibt es eine Kurzschreibweise DLR, dass die Zahl 1.21 sollte als Dezimal interpretiert werden, ähnlich wie ich die '1.21m' -Notation in C# verwenden würde? Oder gibt es eine andere Möglichkeit, die Dezimalzahl zu erzwingen, anstatt sie zu verdoppeln?
Danke. Ich bleibe bei der Dezimalschreibweise (1.21). In diesem Fall kann ich mit dem Konstruktor von einem Gleitpunkt aus leben, da es in meinem Fall keinen Präzisionsverlust geben wird. Ich war mehr besorgt über das Ergebnis der Berechnung. – jeroenh