0

我目前正在使用 Windows 窗体制作计算器,并且正在使用字符串数据类型来存储用户输入的数学表达式。除了,当想要将它转换为可以给我结果的数据类型时,我需要使用评估器,所以我将 NCalc 库添加到我的项目中,但它将它转换为双精度,我希望它给我一个小数作为出于精度原因输出。

有什么方法可以配置 NCalc 来decimal代替执行计算double?如果不可能,那么什么是有效的替代方案?

    string expression = "2+4+36/12"
    double convertedExpression = Decimal.parse(expression);

它不是这样工作的,但这是我想要的想法。但是我使用哪种方式来转换它并不重要,我只想将字符串 wut==ith 一个数学表达式转换为带有结果的小数。

4

1 回答 1

1

看起来 NCalc 只支持解析 [int / double / string / datetime / bool] 常量; 语法/NCalc.g

您可以定义自己的命名函数来进行转换;

    var expr = new Expression("decimal(\"0.123\")");
    expr.EvaluateFunction += evaluateFunction;

    private void evaluateFunction(string name, FunctionArgs args){
        if (name == "decimal")
            arg.Result = decimal.Parse((string)args.Parameters[0].Evaluate());
        ...
    }
于 2019-11-19T01:36:37.550 回答