supponiamo Ho il seguente script IronPython:Esiste una notazione letterale per decimale in IronPython?
def Calculate(input):
return input * 1.21
Quando chiamato da C# con un decimale, questa funzione restituisce un doppio:
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);
mi sembra di avere due opzioni:
First , Potrei lanciare sul lato C#: sembra un no-go perché potrei perdere la precisione.
decimal result = (decimal)engine.Calculate(input);
seconda opzione è quella di utilizzare System.Decimal nello script python: opere, ma inquina lo script un po '...
from System import *
def CalculateVAT(amount):
return amount * Decimal(1.21)
C'è una notazione DLR breve a mano che il numero dovrebbe 1.21 essere interpretato come un decimale, come se usassi la notazione "1.21m" in C#? O c'è un altro modo per far rispettare il decimale da usare invece del doppio?
Grazie. Continuerò con la notazione Decimal (1.21). In questo caso, posso vivere con il costruttore da un punto variabile, poiché nel mio caso non ci saranno perdite di precisione. Ero più preoccupato per il risultato del calcolo. – jeroenh