C# 计算自定义公式的一种解决方案

可实现简单的四则运算,带变量名运算,数学公式运算,支持小数运算,不过,数学公式运算要注意字母的大小写,hanQ从网上找到的资料写的是 Math.Pow()是错的,正确可运行的公式应该是Math.pow(),这一点要注意,原理是引用了js,而JS的函数是小写的,关于JS的函数使用 方式,请参见http://hi.baidu.com/shidadmt/blog/item /fc8dab1a63e59c1e8718bf39.html。

只要是js支持的运算都可以支持。

效果图:注意,给出的Demo是form版本的,其他版本大同小异。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Eval
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void execBtn_Click(object sender, EventArgs e)
        {
            if (!"".Equals(inTxt.Text))
            {
                MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass();
                sc.Language = "JavaScript";

                string rval = inTxt.Text;
                rval = rval.Replace("Evaluator_a", val_a.Text);
                string r = "";
                try
                {
                    r = sc.Eval(rval).ToString();
                }
                catch { MessageBox.Show("计算失败!"); }
                rtLst.Items.Add(inTxt.Text + "=" + ("".Equals(r)?"ERR":r));
                rtLst.SelectedIndex = rtLst.Items.Count - 1;
            }
            else
            {
                MessageBox.Show("请输入公式!");
            }
        }
    }
}

转载于:https://my.oschina.net/ldaga/blog/79830

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值