怎样计算一个字符串公式的值?

2012-09-24 11:56:47
式子:string str = "a*(b-c)";
float a=2,b=10,c=9.5;

做一个替换后将str变成:str="2*(10-9.5)";
怎么得到真正的值1呢?
...全文
179 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2012-09-25
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20110430/02/a3a306f8-2e21-4271-b3c5-35e2018933be.html
2012-09-25
  • 打赏
  • 举报
回复
其实这个只是其中一个点,全部的应该是还有if判断的,那个加这个才是我真正要做的。
这个有人帮忙找到结果了。
自己解析难写不说,效果也不会好哪去,采用了动态编译。
因为可能会缺;,所以没有用C#,用的是ScriptEngine
yonglaixiazaide 2012-09-24
  • 打赏
  • 举报
回复
好方法。。
[Quote=引用 5 楼 的回复:]
放到查询分析器里面执行多直接,或者写到存储过程里专门负责此类逻辑,项目里面封装好方法,直接调用,传个字符串类型的参数就ok
[/Quote]
征服者X 2012-09-24
  • 打赏
  • 举报
回复
string str = Convert.ToDecimal(a)*(Convert.ToDecimal(b)-Convert.ToDecimal(c)).ToString();
  • 打赏
  • 举报
回复
放到查询分析器里面执行多直接,或者写到存储过程里专门负责此类逻辑,项目里面封装好方法,直接调用,传个字符串类型的参数就ok
yonglaixiazaide 2012-09-24
  • 打赏
  • 举报
回复
你这不科学啊,,,比较死
[Quote=引用 3 楼 的回复:]
C# code


using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
……
[/Quote]
xingxingbanyue 2012-09-24
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string str = "a * (b - c)";
string str1 = "2*(10-9.5)";
string str2 = Compute(str1);
Console.WriteLine(str);
Console.WriteLine(str1);
Console.WriteLine(str2);
Console.ReadLine();
}

static string Compute(string str)
{
string a = str.Substring(0,str.IndexOf('*'));
string b = str.Substring(str.IndexOf('(')+1,str.IndexOf('-')-str.IndexOf('(')-1);
string c = str.Substring(str.IndexOf('-')+1, str.IndexOf(')') - str.IndexOf('-') - 1);
double temp = Convert.ToDouble(a) * (Convert.ToDouble(b) - Convert.ToDouble(c));;
return Convert.ToString(temp);
}
}


上面写的是一个控制台程序,参考
yonglaixiazaide 2012-09-24
  • 打赏
  • 举报
回复
LS 说的对,你要自己写解析方法,这个就像做复杂的四则运算一样,早起这中算法很难得,看你小时候的计算器就知道了,现在 很简单了,你查下,很多资料的,如果 是对称的,可以考虑用栈
瑞卡哥哥 2012-09-24
  • 打赏
  • 举报
回复
这个你得 自己写一套解析的方法

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧