社区
MS-SQL Server
帖子详情
數學公式如何存儲在數據庫中啊?
---涛声依旧---
2006-04-12 08:51:13
在SQL Server中﹐數學公式如何建表來存儲啊﹐并且在前台很方便處理。
200分求解。
...全文
1104
24
打赏
收藏
數學公式如何存儲在數據庫中啊?
在SQL Server中﹐數學公式如何建表來存儲啊﹐并且在前台很方便處理。 200分求解。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
---涛声依旧---
2006-04-26
打赏
举报
回复
多謝謝各位
我自己搞定了﹐結貼。
李雅勇的技术专栏
2006-04-14
打赏
举报
回复
//================插值================
//2004,oct,4.
//包括Lagrange,newton插值。
//====================================
#include
#include
#include
#include
usingnamespacestd;
classinterpolation{
protected:
intn; //数表的长度为n+1
vectortx;
vectorty;
public:
interpolation(intvn,char*path);
};
classnewton:publicinterpolation{
public:
doublefun(intvn,doublevx); //计算vn次插值。前插
doublefun2(intvn,doublevx); //后插。
newton(intvn,char*path):interpolation(vn,path){}
};
classlagrange:publicinterpolation{
public:lagrange(intvn,char*path):interpolation(vn,path){}
doublefun(intvn,doublevx);
};
doublelagrange::fun(intvn,doublevx){
vectorx(tx);
vectory(ty);
doubleli=1,Ln=0;
for(inti=0;i<=vn;i++){
for(intj=0;j<=vn;j++)if(j!=i)li*=((vx-x[j])/(x[i]-x[j]));
Ln+=y[i]*li;li=1;
}
returnLn;
}
interpolation::interpolation(intvn,char*path){
n=vn;
ifstreamin(path,ios::in);
inti;
doubletemp;
for(i=0;i<=vn;i++){
in>>temp;
tx.push_back(temp);
cout< }
cout< for(i=0;i<=vn;i++){
in>>temp;
ty.push_back(temp);
cout< }
cout<}
doublenewton::fun(intvn,doublevx){
vectorx(tx);
vectory(ty);
doubleh=x[1]-x[0];
doublet=(vx-x[0])/h;
inti,j;
for(i=1;i<=vn;i++)for(j=vn;j>=i;--j)y[j]-=y[j-1];
doubleli=1;
doubleLn=y[0];
for(i=1;i<=vn;++i){
li*=1.0/i*(t-i+1);
Ln+=y[i]*li;
}
returnLn;
}
doublenewton::fun2(intvn,doublevx){
vectorx(tx);
vectory(ty);
doubleh=x[1]-x[0];
doublet=(vx-x[n])/h;
inti,j;
for(i=1;i<=vn;++i){ //计算vn次插值。
cout< for(j=n-vn;j<=n-i;j++){
y[j]=y[j+1]-y[j];
cout<<"ty["< }
cout< }
doubleli=1,Ln=ty[n];
for(i=1;i<=vn;i++){
li*=1.0/i*(t-i+1);
Ln+=y[n-i]*li;
}
returnLn;
}
voidmain(){
/*
newtonnn(6,"d:\\dy\\fnumtable2.txt");
//数表如下:
//1.01.051.101.151.201.251.30
//1.01.024701.048811.072381.095441.118031.14017
cout< cout<*/
lagrangelag(3,"d:\\dy\\fnumtable.txt");
//数表如下:
//0.40.50.70.8
//-0.916291-0.693147-0.356675-0.223144
cout<
}
代码是粘C++的。
你试一试吧。
李雅勇的技术专栏
2006-04-14
打赏
举报
回复
我要强调的是,SQL Server是用来存储信息的数据库系统,如果是计算的话,还是应该放在前台。
再说:
Yang_(扬帆破浪)
"编译(或者解释)系统是比较复杂的,一般我们能做的都是很小的子集,所以就算是放在前台,也要先限定这个子集,最好用文法把这个集合写出来,免得编程的时候漏洞百出。"
这个说法,可以看出他没有写过这样的程序,根本不是解释系统那么复杂,还用到了文法,我们做的不是语法分析器,用什么文法?
四则混合运算很简单:+,-,*,/,(,),[,],{,},一共就这么多种符号,根本就不用做子集,用一个数组存储一个二维表,这个二维表说明其优先级及结合次序,表如下:
+ - * / ( )
+ 0 > < < < >
- > 0 < < < >
* > > 0 > < >
/ > > > 0 < >
( < < < < < >
) > > > > > >
做两个栈,一个栈用来放数据,一个栈用来放运算符。根据取出的数据和符号来计算,算法就是根据上面的表看是先运算出结果还是先等待后面的高优先级符号。
//2004.10.10.
//byduoyun.
//一位数的四则和乘方运算.哈哈.
//只能计算二元运算符的表达式.
//优先关系表table中的3表示未定义,如果出现,认为是语法错误。
#pragmawarning(disable:4786)
#include
#include
#include
#include
#include
usingnamespacestd;
classexpression{
stringexp;
mapmm; //!!!!mm似乎应该继承一下从而有自己的构造函数,
//在expression中定义mm为静态成员?????
//i.......
staticinttable[8][8];
stackoo;
stacknn;
doubleoperation(doublen1,charc,doublen2);
intprecede(charc1,charc2);
public:
doubleevalute();
expression(string);
};
//以+-*/()^#的次序排列
//0-->greater,//1-->less,//2-->equal,//3-->notdefined
intexpression::table[8][8]=
{
{0,0,1,1,1,0,1,0},
{0,0,1,1,1,0,1,0},
{0,0,0,0,1,0,0,0},
{0,0,0,0,1,0,0,0},
{1,1,1,1,1,2,1,3},
{0,0,0,0,3,0,0,0},
{0,0,0,0,1,0,0,0},
{1,1,1,1,1,3,1,2}
};
intinlineexpression::precede(charc1,charc2){
returntable[mm[c1]][mm[c2]];
}
doubleexpression::operation(doublen1,charc,doublen2){
//
switch(c){
case'+':returnn1+n2;
case'-':returnn1-n2;
case'*':returnn1*n2;
case'/':returnn1/n2;
case'^':returnpow(n1,n2);
default:cout<<"badoperator!!!!"< }
}
doubleexpression::evalute(){
oo.push('#');
string::iteratorp=exp.begin();
chartheta;
doublea,b;
while(*p!='#'||oo.top()!='#'){
map::iteratorpp=mm.find(*p);
if(pp==mm.end()){ //ifthecurrentcharisnotanoperator.
if(*p<48||*p>58){
cout<<"Badnumoroperator!!!!"< exit(0);
}
nn.push(*p-48); //pushittothenumstack.
p++;
}
elseswitch(precede(oo.top(),*p)){
case1:
oo.push(*p);
p++;break;
case2:
if(!oo.empty())oo.pop();
p++;break;
case0:
if(!oo.empty()){
theta=oo.top();
oo.pop();
}
else{
cout<<"youenteredabadexpression"< <<"stackooError!!noelement,can'tpop"< exit(1);
}
if(!nn.empty()){
b=nn.top();nn.pop();
}
else{
cout<<"youenteredabadexpression"< <<"stacknnError!!noelement,can'tpop"< exit(1);
}
if(!nn.empty()){
a=nn.top();nn.pop();
}
else{
cout<<"youenteredabadexpression"< <<"stacknnError!!noelement,can'tpop"< exit(1);
}
nn.push(operation(a,theta,b));
break;
default:cout<<"badexpression!!!"< }
}
if(nn.empty()){
cout<<"badresult!!!"< exit(0);
}
returnnn.top();
}
expression::expression(stringexpress){
exp=express+'#';
mm.insert(map::value_type('+',0));
mm.insert(map::value_type('-',1));
mm.insert(map::value_type('*',2));
mm.insert(map::value_type('/',3));
mm.insert(map::value_type('(',4));
mm.insert(map::value_type(')',5));
mm.insert(map::value_type('^',6));
mm.insert(map::value_type('#',7));
}
voidmain(){
stringexpr="";
cout<<"Helloeveryone."< <<"Icanonlyhandleonedigitcaculation."< <<"so,don'tpuzzleme.*_*,"< <<"Iwillworkhardandlearnmoreinthefuture."< while(expr!="#"){
cout<<"Enteranexpression(Entera'#'willendtheprogram):"<
cin>>expr;
//cout< if(expr=="#")break;
expressione(expr);
cout<<"theresultof"< }
}
prcgolf
2006-04-13
打赏
举报
回复
up
---涛声依旧---
2006-04-13
打赏
举报
回复
前提是这些表的连接条件要确定
難就難在這里啊(用戶自定義的﹐我沒法知道这些表的连接条件啊)﹐目前做特殊處理的﹐但不通用
撸大湿
2006-04-12
打赏
举报
回复
楼主参照libin_ftsafe(子陌红尘) 的动态语句
declare @s varchar(8000)
select @s='select '+V+' as val from #1' from #2 where ID=1
把PRINT @s 看看
子陌红尘
2006-04-12
打赏
举报
回复
單一一個表的蠻好處理﹐
如果再復雜點的話﹐如公式是其他几個表中的几個字段組合成的﹐怎么動態處理啊?
是在后台處理好﹐還是在前台處理好呢?
-----------------------------------------------------------------------------------------------------------------------
几个表可以通过SQL语句合并到一个查询里
李雅勇的技术专栏
2006-04-12
打赏
举报
回复
to:华裔大魔王—抗日英雄—抗日要从娃娃抓起
妈的,我也抗日,我喜欢你的名字。
这样说话不像(交大)了吧
我以前是焦作大学毕业的,应该也是(焦大),现在是郑大。呵呵
---涛声依旧---
2006-04-12
打赏
举报
回复
謝謝樓上几位
單一一個表的蠻好處理﹐
如果再復雜點的話﹐如公式是其他几個表中的几個字段組合成的﹐怎么動態處理啊?
是在后台處理好﹐還是在前台處理好呢?
撸大湿
2006-04-12
打赏
举报
回复
楼上说话口气怎么那么像交大才子-----"migthline (交大的Hejlsberg) "
李雅勇的技术专栏
2006-04-12
打赏
举报
回复
既然是公式,那肯定就是有输入参数和返回值这两点。
如果需要用户写的公式存在数据库中,那是数据库的功能,数据库就是干这个的,你想怎么存都可以,这我就不多说了。
但如果要想执行这个公式,那也不难,但那不是数据库的事儿,数据库要做的其实就是把公式取出来,其它的就不归它管了。
那归谁管?当然归应用逻辑来管。比如你的开发工具是.net,写一个类,用来分析和执行这个公式字符串。
不会?晕,学过数据结构吗?就是严蔚敏那一版,那本书有个配套的练习册,册子上有很多案例程序,第二个就是写一个分析公式并执行的程序,不过没有答案,想学编程就要先学好数据结构和算法,把那本书好好看看,把练习册上的例子编完,你就是高手... ...
撸大湿
2006-04-12
打赏
举报
回复
忘了执行了
declare @a int,@b int ,@c int
declare @公式 nvarchar(4000),@sql varchar(8000)
select @公式='A*B-C',@a=100,@b=1000,@c=10
set @sql= 'SELECT '+REPLACE(
REPLACE(
REPLACE(
@公式,'A',cast(@a as nvarchar(1000))),
'B',cast(@b as nvarchar(1000))),
'C',cast(@c as nvarchar(1000)))+' AS 结果'
EXEC (@sql)
结果
99990
撸大湿
2006-04-12
打赏
举报
回复
declare @a int,@b int ,@c int
declare @公式 nvarchar(4000)
select @公式='A*B-C',@a=100,@b=1000,@c=10
print 'SELECT '+REPLACE(
REPLACE(
REPLACE(
@公式,'A',cast(@a as nvarchar(1000))),
'B',cast(@b as nvarchar(1000))),
'C',cast(@c as nvarchar(1000)))
子陌红尘
2006-04-12
打赏
举报
回复
create table #1(A int,B int,C int)
insert into #1 values(6,6,2)
insert into #1 values(2,2,2)
insert into #1 values(4,4,2)
create table #2(ID int,V varchar(1000))
insert into #2 values(1,'A*B/C')
declare @s varchar(8000)
select @s='select '+V+' as val from #1' from #2 where ID=1
exec(@s)
/*
val
-----------
18
2
8
*/
drop table #1,#2
---涛声依旧---
2006-04-12
打赏
举报
回复
TO﹕dutguoyi(新鲜鱼排)
如果那樣的話﹐在前台處理(計算)就不方便了
若僅僅是存儲起來不參與計算的話﹐就可以像你那樣做
---涛声依旧---
2006-04-12
打赏
举报
回复
TO﹕libin_ftsafe(子陌红尘)
我的目的是把用戶在前台自己設置的公式存起來﹐而且很方便的參與計算。
如何通过动态SQL调用执行Varchar中的公式啊?
能否舉個例子﹐謝謝!
子陌红尘
2006-04-12
打赏
举报
回复
如果只用于存放,而不用于计算,可以存放在二进制数据类型中,如varbinary/image
如果该公式需要在SQL语句中参与计算,则最好用varchar/nvarchar类型存放,然后通过动态SQL调用执行。
新鲜鱼排
2006-04-12
打赏
举报
回复
http://unicode.coeurlumiere.com/
如 x²
新鲜鱼排
2006-04-12
打赏
举报
回复
我觉得都是Unicode,只要类型Nvarchar,或者Nchar的类型,都不会出现问题。
Yang_
2006-04-12
打赏
举报
回复
你的例子不是很复杂,因为只是+-*/()
你要做的是把字段名替换成 表名.字段名,这样的公式在确定查询哪些表,而且这些表的连接条件确定的情况下是可以用动态sql生成查询的
鑽針單價====〉 采購表.鑽針單價
加载更多回复(4)
NicTeX 网络数学
公式
可视化编辑器 v1.0.rar
可在线对数学方程式进行可视化编辑。编辑后有三种输出方式,一是将数学
公式
生成图片,放在WebServer上,链接地址由ASP/PHP/ASP.NET插入网页
中
;二是直接生成静态网页,当访客打开含有数学
公式
的静态网页时,再激发WebServer上的CGI将数学
公式
生成图片输出;三是将编辑好的数学
公式
的TeX/LaTeX指令与网页一起存于数据库
中
,在访客通过ASP/PHP/ASP.NET调用时,由WebServer生成图片并输出网页 主要功能和特点: 1、对于初学者,有直观易用、所见即所得(英文:What You See Is What You Get,缩写:WYSIWYG)的用户界面;对于TeX/LaTeX语法精通者,能所想即所得(英文:What You Think Is What You Get,缩写:WYTIWYG),随心所欲编辑数学
公式
,无需再像MS-WORD那样在工具栏
中
选来选去,直接写下你心
中
的
公式
,编译一下,马上就能看到你心
中
所想的数学
公式
,不行再改。 2、对于初学者,具有可视化的WEB编辑界面;对于精通者,可直接在网页
中
插入
公式
TeX代码,存储一下,即可完成
公式
的网络发布,而不必先在MathTypeK或MS-WORD
中
编好
公式
,再以在网页
中
插图的方式来进行数学
公式
的网络发布。 3、能在Windows、Linux和FreeBSD等各种网络服务器
中
运行。 4、自动智能改变
公式
的字体和格式,适合各种复杂的
公式
,支持多种字体。 5、支持TeX和LaTeX,并能够把
公式
转化为支持Web的各种图形。 6、超过500种
公式
符号和模版,涵盖数学、物理、化学、地理等科学领域。
django-expression-fields:django-expression-fields允许您的用户在表单字段
中
键入数学表达式。 Python进行数学运算并将结果存储在数据库
中
介绍 django-expression-fields允许您的用户在表单字段
中
键入数学表达式。 Python进行数学运算并将结果存储在数据库
中
。 例如,假设您有一个跟踪事物的模型,如下所示: class Thing(models.Model): cost = models.DecimalField( max_digits=5, decimal_places=2, null=True, blank=True) 假设事物以12包的价格打包出售,价格为7.99美元。 您的用户必须做一些数学运算才能填满单个Thing的成本,即0.67美元。 但是不包含表达式字段! 像这样创建您的表单: class ThingForm(forms.Form): cost = DecimalExpressionField( max_digits=5, decimal_places=2, requir
MathType7
公式
编辑器视频教程
适用人群MathType可应用于教育教学、科研机构、工程建设、论文写作、期刊排版、编辑理科试卷,IT信息......课程概述MathType是一款专业的数学
公式
编辑器,兼容Office系列 word,excel等700多种程序,用于编辑书籍、报刊、论文、数学试卷等文档轻松输入各种复杂的数学
公式
和符号。不仅延续了Word原有的功能,还增添了大小属性页工具栏,可以重输入更多的模板
公式
。MathType是一款专业、功能强大的数学
公式
编辑工具,同时支持Windows和Mac操作系统,与文字处理软件有很好的兼容性,可在各种文档
中
加入复杂的数学
公式
和符号。出版社,社会学,技术,作家,化学均适用。支持鼠标、写字板、手写触摸屏等输入方式
WebTeX 可视化网络
公式
编辑器源码
WebTeX 网络
公式
可视化编辑器 的源码分为两部分。一部分是核心源码,是一个基于TeX/LaTeX的CGI应用程序、dll组件或浏览器插件。另一部分是基于ASP/PHP/ASP.NET/JSP的输入TeX/LaTeX指令的可视化编辑器源码,它可在线对数学方程式进行可视化编辑。编辑后有四种输出方式供选择。一是将数学
公式
生成图片,放在WebServer上,链接地址由ASP/PHP/ASP.NET插入网页
中
。二是直接生成静态网页,当访客打开含有数学
公式
的静态网页时,再激发WebServer上的CGI将数学
公式
生成图片输出。三是将编辑好的数学
公式
的TeX/LaTeX指令与网页一起存于数据库
中
,在访客通过ASP/PHP/ASP.NET/JSP调用时,由WebServer生成图片并输出网页。四是生成符合MathML标准的文本文件,再由浏览器插件解析为
公式
显示。 WebTeX 网络数学
公式
编辑器的主要特点: 1、对于初学者,有直观易用、所见即所得(英文:What You See Is What You Get,缩写:WYSIWYG)的用户界面;对于TeX/LaTeX语法精通者,能所想即所得(英文:What You Think Is What You Get,缩写:WYTIWYG),随心所欲编辑数学
公式
,无需再像MS-WORD那样在工具栏
中
选来选去,直接写下你心
中
的
公式
,编译一下,马上就能看到你心
中
所想的数学
公式
,不行再改。 2、对于初学者,具有可视化的WEB编辑界面;对于精通者,可直接在网页
中
插入
公式
TeX代码,存储一下,即可完成
公式
的网络发布,而不必先在MathType或MS-WORD
中
编好
公式
,再以在网页
中
插图的方式来进行数学
公式
的网络发布。 3、能在Windows、Linux和FreeBSD等各种网络服务器
中
运行。 4、自动智能改变
公式
的字体和格式,适合各种复杂的
公式
,支持多种字体。 5、支持TeX和LaTeX,并能够把
公式
转化为支持Web的各种图形。 6、超过600种
公式
符号和模版,涵盖数学、物理、化学、地理等科学领域,另外能生成围棋棋普、乐谱等。
中
小学题库mysql.zip
数学物理化学
公式
的录入和显示一直是个大问题,本资源以mysql数据库和详细的文档完整展示了试题的存储、
公式
的显示、latex的使用等在线教育会遇到的问题,并且提供了样本题库供在线k12教育从业者在对题库数据库的章节建设、知识点的建设、题目属性的设置上进行参考。
MS-SQL Server
34,576
社区成员
254,588
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章