предположим, у меня есть следующий скрипт IronPython:
def Calculate(input):
return input * 1.21
При вызове из C # с десятичной дробью эта функция возвращает значение типа double:
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);
Кажется, у меня есть два варианта:
Во-первых, я мог бы сыграть на стороне C #: кажется, что нет, так как я могу потерять точность.
decimal result = (decimal)engine.Calculate(input);
Второй вариант - использовать System.Decimal в скрипте python: работает, но несколько загрязняет скрипт ...
from System import *
def CalculateVAT(amount):
return amount * Decimal(1.21)
Существует ли сокращенная запись DLR, что число 1.21 следует интерпретировать как десятичное число, так же, как я бы использовал запись '1.21m' в C #? Или есть какой-то другой способ применения десятичного числа вместо двойного?