如何强制转换?

yumanqing 2008-11-26 11:07:59
一段很简单的计算公式代码:

string str = "(a-b)*12+c-d";//与此字符串相对应的是一个数组:3,4,5,6
str = str.Replace("a", a.ToString());
str = str.Replace("b", b.ToString());
str = str.Replace("c", c.ToString());
str = str.Replace("d", d.ToString());
//转换出来的公式为:
//(3-4)*12+5-6
double dd = Convert.ToDouble(str); //这句报错,怎么才能取到计算的结果呢?
对不起,时间太紧,思维乱了,上来提个问,谢谢
...全文
125 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
止戈而立 2008-11-26
  • 打赏
  • 举报
回复
private string ComputeField(sting[] Items, string strFormula)
{
string[] Item = null;
strFormula=strFormula.Replace(Item[0].ToString(), Item[1].ToString());

MessageBox.Show(strFormula);
return strFormula;
}
pbmlly 2008-11-26
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
private string ComputeField(sting[] Items, string strFormula)
{
string[] Item = null;
strFormula.Replace(Item[0].ToString(), Item[1].ToString());
MessageBox.Show(strFormula);
return strFormula;
}
把红色的改成
strFormula = strFormula.Replace(Item[0].ToString(), Item[1].ToString());
yumanqing 2008-11-26
  • 打赏
  • 举报
回复
还有一个问题
private string ComputeField(sting[] Items, string strFormula)
{
string[] Item = null;
strFormula.Replace(Item[0].ToString(), Item[1].ToString());

MessageBox.Show(strFormula);
return strFormula;
}
string[] ss=new string[2];
ss[0]="101";
ss[1]="20";
string s=ComputeField(ss, "101+102") //为什么没有替换呢?



wanghui0380 2008-11-26
  • 打赏
  • 举报
回复
呵呵,目前这个问题比较麻烦的说
最简单的方法是 借用dataTable

以后net4出来就方便点了,可以使用动态语言特性了
  • 打赏
  • 举报
回复
一个取巧的办法
利用DataTable和DataColumn来做,把DataColumn的expression定义为你的计算公司,把你的变量定义为其他字段,就可以得出值来

还有一个办法就是到数据库去执行,拼成一个sql语句
string str = "(a-b)*12+c-d";//与此字符串相对应的是一个数组:3,4,5,6
str = str.Replace("a", a.ToString());
str = str.Replace("b", b.ToString());
str = str.Replace("c", c.ToString());
str = str.Replace("d", d.ToString());
//转换出来的公式为:
//(3-4)*12+5-6
string sql = "select " + str;

//到数据库执行sql
yumanqing 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 min_jie 的回复:]
我晕。。。你看看下面这个帖子吧:
http://topic.csdn.net/u/20081014/22/b23d60b2-0556-4512-8fac-c0302cb3d628.html
[/Quote]

这个上面写的到时有,不过计算方法有些看不懂,有简单的方法没
zyx_hawk 2008-11-26
  • 打赏
  • 举报
回复
Convert.ToDouble(str); 这个是数据类型转换函数,并不能实现计算功能.也就是说,你只能自己把公式拆开一点点计算
止戈而立 2008-11-26
  • 打赏
  • 举报
回复
llsen 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 yumanqing 的帖子:]
一段很简单的计算公式代码:

C# code
string str = "(a-b)*12+c-d";//与此字符串相对应的是一个数组:3,4,5,6
str = str.Replace("a", a.ToString());
str = str.Replace("b", b.ToString());
str = str.Replace("c", c.ToString());
str = str.Replace("d", d.ToString());
//转换出来的公式为:
//(3-4)*12+5-6
double dd = Convert.ToDouble(str); //这句报错,怎么才能取到计算的结果呢?
对不起,…
[/Quote]

如果是数字计算
干嘛用string 直接数值就好了嘛

double dd = (a-b)*12+c-d * 1.0;

a如果是string 的话

int inta = Convert.ToInt32(a);
yumanqing 2008-11-26
  • 打赏
  • 举报
回复
非常感谢,最近心总是静不下来,..................................

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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