【发布时间】:2017-09-19 06:09:24
【问题描述】:
这是Text Based Basic Formula Calculator Function/Class的后续问题
我尝试使用一个简单的数学公式,即 2^3,如下所示,通过使用 Microsoft.CodeAnalysis.CSharp.Scripting:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Scripting;
using org.mariuszgromada.math;
using org.mariuszgromada.math.mxparser;
namespace ConsoleApplication4
{
class Program
{
static async Task<double> EvaluateFormulaAsync(string formula)
{
return await CSharpScript.EvaluateAsync<double>(formula, ScriptOptions.Default.WithImports("System.Math"));
}
static void Main(string[] args)
{
var result = EvaluateFormulaAsync("2 ^ 8").Result;
Console.WriteLine(result);
Console.ReadLine();
}
}
}
但结果我得到了 10 而不是 256。为什么会发生这种情况?
其次,尝试了 MXParser,但我做了他们网站上解释的所有事情。但我没有使它与下面的代码一起工作,并在
我不知道为什么这些根本不起作用。请帮助我找到更好的东西或帮助我完成这些工作。
字符串结果 = mXparser.numberToAsciiString(eh.calculate());
异常:System.ArgumentOutOfRangeException
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Scripting;
using org.mariuszgromada.math;
using org.mariuszgromada.math.mxparser;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
Expression eh = new Expression("2^8");
String result = mXparser.numberToAsciiString(eh.calculate());
Console.WriteLine(Convert.ToInt32(result));
Console.ReadLine();
}
}
}
【问题讨论】:
-
请删除图片并将代码/异常粘贴为文本
-
@SirRufo 做到了。
-
mXparser.numberToAsciiString() 是一种仅基于数学公式显示“Helo World”的方法;-) 它将字节转换为文本。它不能用于评估表达式。为此,请遵循 mXparser 教程mathparser.org/mxparser-tutorial