数学算式类库 说明书.docx

上传人:b****7 文档编号:9394217 上传时间:2023-02-04 格式:DOCX 页数:20 大小:50.07KB
下载 相关 举报
数学算式类库 说明书.docx_第1页
第1页 / 共20页
数学算式类库 说明书.docx_第2页
第2页 / 共20页
数学算式类库 说明书.docx_第3页
第3页 / 共20页
数学算式类库 说明书.docx_第4页
第4页 / 共20页
数学算式类库 说明书.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数学算式类库 说明书.docx

《数学算式类库 说明书.docx》由会员分享,可在线阅读,更多相关《数学算式类库 说明书.docx(20页珍藏版)》请在冰豆网上搜索。

数学算式类库 说明书.docx

数学算式类库说明书

数学算式类库

说明书

 

简介

作品名:

数学算式类库

作者:

AI编程集团点石成金

开发平台:

WinXP+VB2010

.NetFramework版本:

3.5

类型:

VB第三方控件/可视化控件/类库

描述:

计算包含+,-,*,/,\,%,|,^运算符的式子,式子中可以包含大中小括号,也可以包含如下函数:

Abs,Acos,Asin,Atan,Atan2,BigMul,Ceiling,Cos,Cosh,Div,Mod,Exp,Floor,Log,Max,Min,Pow,Round,Sign,Sin,Sinh,Sqrt,Tan,Tanh,Truncate;开发者也可以自己定义函数,包括中文函数名。

常量支持:

PI和E,开发者可以自己添加更多自定义常量

提醒:

本文最后附上一个实例,大家可以直接看这个实例。

在bin\Debug\目录下只包含AIPGroup.dll1.0的测试版,只会在屏幕上显示一行文字,并不影响用户工作,但如果换成商业版,就没有这行文字了,需要花1元钱购买商业版的用户请到AI编程集团官方博客圈子找灵光大师购买。

AIPGroup.dll1.0商业版的名称是:

AI编程集团1.0

功能详解

《数学算式类库》1.0版中包含的类“算式子”提供计算数学式子的功能。

支持2个常量、26个数学函数、8种数学运算。

比其它产品更高级的功能是:

允许添加新的常量、新的数学函数。

函数名、常量名不区分大小写,常量名会被转换成小写形式,在输入常量名列表时自动排列。

支持的常量列表如下:

常量名

PI

3.14159265358979

E

2.71828182845905

支持的运算符如下表所示:

运算符

对应的数学运算

运算优先级

函数、括号

数学函数

第1级

^

幂,例如:

2^3=8;3^2=9

第2级

|

分数,例如:

3|2=1.5

第3级

*

乘,例如:

2*3=6;3*3=9

第3级

/

除,例如:

8/2=3;3/2=1.5

第3级

\

整除,例如:

5\3=1;5\2=2

第3级

%

取余,例如:

5%3=2;5%2=1

第3级

-

减,例如:

5-3=2;5-1=4

第4级

+

加,例如:

5+3=8;5+1=6

第4级

注意:

式子中允许出现大、中、小括号,也允许出现空格;

分数被视为除法运算,但在显示的时候,格式上有所不同。

支持的函数如下表所示:

 

函数

释义

Abs(数字)

计算数字的绝对值

Acos(d)

计算余弦值为指定数字的角度

参数:

d:

一个表示余弦值的数字,其中-1≤d≤1。

计算值:

角度θ,以弧度为单位,满足0≤θ≤π

Asin(d)

计算正弦值为指定数字的角度

参数:

d:

一个表示正弦值的数字,其中-1≤d≤1。

计算值:

角度θ,以弧度为单位,满足-π/2≤θ≤π/2

Atan(d)

计算正切值为指定数字的角度。

参数:

d:

表示正切值的数字。

计算值:

角度θ,以弧度为单位,满足-π/2≤θ≤π/2。

Atan2(y,x)

计算正切值为两个指定数字的商的角度。

参数:

y:

点的y坐标。

x:

点的x坐标。

计算值:

角度θ,以弧度为单位,满足-π≤θ≤π,且tan(θ)=y/x,其中(x,y)是笛卡尔平面中的点。

请看下面:

如果(x,y)在第1象限,则0<θ<π/2。

如果(x,y)在第2象限,则π/2<θ≤π。

如果(x,y)在第3象限,则-π<θ<-π/2。

如果(x,y)在第4象限,则-π/2<θ<0。

如果点在象限的边界上,则计算值如下:

如果y为0并且x不为负值,则θ=0。

如果y为0并且x为负值,则θ=π。

如果y为正值并且x为0,则θ=π/2。

如果y负值并且x为0,则θ=-π/2。

BigMul(a,b)

生成两个32位数字的完整乘积。

参数:

a:

第一个乘数

b:

第二个乘数

Ceiling(d)

计算大于或等于指定的十进制数的最小整数。

参数:

d:

一个小数。

计算值:

大于或等于d的最小整数。

Cos(d)

计算指定角度的余弦值。

参数:

d:

以弧度计量的角度。

计算值:

d的余弦值。

Cosh(value)

计算指定角度的双曲余弦值。

参数:

value:

以弧度计量的角度。

Div(a,b)

整除,a是被除数,b是除数

例如:

Div(5,3)=1

Mod(a,b)

取余,a是被除数,b是除数

例如:

Mod(5,3)=2

Exp(d)

计算e的指定次幂。

参数:

d:

指定幂的数字。

Floor(d)

计算小于或等于指定小数的最大整数。

参数:

d:

一个小数。

计算值:

小于或等于d的最大整数。

Log(d)

计算指定数字的自然对数(底为e)。

参数:

d:

要查找其对数的数字。

Max(val1,val2)

计算两个数中较大的一个。

参数:

val1:

要比较的两个数中的第一个。

val2:

要比较的两个数中的第二个。

 

计算值:

val1或val2参数中较大的一个。

Min(val1,val2)

计算两个数中较小的一个。

 

参数:

val1:

要比较的两个数中的第一个。

val2:

要比较的两个数中的第二个。

 

计算值:

val1或val2参数中较小的一个。

Pow(x,y)

计算指定数字的指定次幂。

 

参数:

x:

要乘幂的双精度浮点数。

y:

指定幂的双精度浮点数。

 

计算值:

数字x的y次幂。

Round(a)

将双精度浮点值舍入为最接近的整数。

参数:

a:

要舍入的双精度浮点数。

计算值:

最接近a的整数。

如果a的小数部分正好处于两个整数中间,其中一个整数为偶数,另一个整数为奇数,则计算偶数。

Sign(value)

计算表示双精度浮点数字的符号的值。

参数:

value:

有符号的数字。

计算值:

表示value的符号的数字。

数字

说明

-1

value小于零

0

value等于零

1

value大于零

Sin(a)

计算指定角度的正弦值。

参数:

a:

以弧度计量的角度。

计算值:

a的正弦值

Sinh(value)

计算指定角度的双曲正弦值。

参数:

value:

以弧度计量的角度。

Sqrt(d)

计算指定数字的平方根。

参数:

d:

数字。

Tan(a)

计算指定角度的正切值。

参数:

a:

以弧度计量的角度。

Tanh(value)

计算指定角度的双曲正切值。

参数:

value:

以弧度计量的角度。

Truncate(d)

计算指定小数的整数部分。

参数:

d:

要截断的数字。

计算值:

d的整数部分(即舍弃小数位后剩余的数)。

 

实例

实例1:

把JHL=1982作为常量添加到其中

方法1:

在设计时,通过属性窗口,双击[常量]一行的右边,在弹出的窗口中,添加一行:

JHL=1982

方法2:

在运行时,通过“常量Value”的添加方法去添加;

实例2:

自定义一个函数名为“PJ”的函数,用于计算多个数的平均数

第1步:

在[函数名]属性中添加函数名“PJ”;

第2步:

在“计算自定义函数”事件中编写响应“PJ”的代码,例如:

PrivateSubForm1_Load(……)HandlesMyBase.Load

算式子1.函数名Value.Add("PJ")

EndSub

PrivateSub算式子1_计算自定义函数(……ByVal函数名AsSystem.String,

ByVal参数()AsSystem.Double,ByRefresultAsSystem.Double)Handles算式子1.计算自定义函数

If函数名.ToUpper="PJ"Then

DimrAsDouble=Double.NaN

ForEachiAsDoubleIn参数

IfDouble.IsNaN(r)Then

r=i

Else

r=r+i

EndIf

Next

r=r/参数.Count

result=r

EndIf

EndSub

 

实例3:

把计算式子的过程灵活地显示出来

这就需要用到“每一步”事件,这个事件在‘每计算完一步’后就被触发,可以按照下面的格式去写:

PrivateSub算式子1_每一步(……ByVal式子AsSystem.String)Handles算式子1.每一步

'把每一步都显示到TextBox3

TextBox3.AppendText(式子&vbCrLf)

'刚被计算出来的值用括起来

'下一步要计算的部分用括起来

EndSub

为了讲清楚这个VB第三方类库的用法,我编写实例程序:

金海龙算式子.zip,

欢迎通过我的博客上的链接免费下载。

这个程序的界面如下:

Form1中从上到下依次是三个TextBox,第三个TextBox是个多行文本框,用于保存每一步的计算结果,都是HTML格式。

把TextBox3中的代码做成一张网页,代码如下:

1+2-8/2^2*{10-[Pow(2,3)]}

1+2-8/2^2*{10-[Pow(2,3)]}

1+2-8/2^2*{10-[Pow(2,3)]}

1+2-8/2^2*{10-[8]}

1+2-8/2^2*{10-8}

1+2-8/2^2*{2}

1+2-8/2^2*2

1+2-8/4*2

1+2-2*2

1+2-4

3-4

-1

用IE8打开后,就是下面的样子:

粗体的部分是“即将要被计算的”;

斜体的部分是“已经被计算出来的值”。

只要稍微改一改其Style或者CSS,就可以做出格式更好的教学题课件。

相关代码如下:

Form1.vb:

Imports数学算式类库

PublicClassForm1

'一、单击Button1开始计算TextBox1中的式子,计算完毕后把结果保存到TextBox2,并且把每一步都显示到TextBox3

PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click

'单击Button1开始计算TextBox1中的式子

Me.TextBox3.Clear()

Me.算式子1.式子=Me.TextBox1.Text

Me.算式子1.计算()

TextBox2.Text=算式子1.结果Value'如果不写这一行的话,可以仿照下面的Sub

EndSub

'PrivateSub算式子1_结果Changed(ByValsenderAsSystem.Object)Handles算式子1.结果Changed

'计算完毕后把结果保存到TextBox2

'TextBox2.Text=算式子1.结果Value

'EndSub

PrivateSub算式子1_每一步(ByValsenderAsSystem.Object,ByVal式子AsSystem.String)Handles算式子1.每一步

'把每一步都显示到TextBox3

TextBox3.AppendText(式子&vbCrLf)

'刚被计算出来的值用括起来

'下一步要计算的部分用括起来

EndSub

'***********************************************************************************

'二、增加一个用于计算平均数的函数:

PJ(数字1,数字2,数字3,……)

PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load

算式子1.函数名Value.Add("PJ")

EndSub

PrivateSub算式子1_计算自定义函数(ByValsenderAsSystem.Object,ByVal函数名AsSystem.String,ByVal参数()AsSystem.Double,ByRefresultAsSystem.Double)Handles算式子1.计算自定义函数

If函数名.ToUpper="PJ"Then

DimrAsDouble=Double.NaN

ForEachiAsDoubleIn参数

IfDouble.IsNaN(r)Then

r=i

Else

r=r+i

EndIf

Next

r=r/参数.Count

result=r

EndIf

EndSub

EndClass

Form1.Designer.vb:

Imports数学算式类库

_

PartialClassForm1

InheritsSystem.Windows.Forms.Form

'Formoverridesdisposetocleanupthecomponentlist.

_

ProtectedOverridesSubDispose(ByValdisposingAsBoolean)

Try

IfdisposingAndAlsocomponentsIsNotNothingThen

components.Dispose()

EndIf

Finally

MyBase.Dispose(disposing)

EndTry

EndSub

'RequiredbytheWindowsFormDesigner

PrivatecomponentsAsSystem.ComponentModel.IContainer

'NOTE:

ThefollowingprocedureisrequiredbytheWindowsFormDesigner

'ItcanbemodifiedusingtheWindowsFormDesigner.

'Donotmodifyitusingthecodeeditor.

_

PrivateSubInitializeComponent()

Mponents=NewSystem.ComponentModel.Container()

Me.Button1=NewSystem.Windows.Forms.Button()

Me.Label1=NewSystem.Windows.Forms.Label()

Me.TextBox1=NewSystem.Windows.Forms.TextBox()

Me.TextBox2=NewSystem.Windows.Forms.TextBox()

Me.Label2=NewSystem.Windows.Forms.Label()

Me.算式子1=New数学算式类库.算式子(Mponents)

Me.TextBox3=NewSystem.Windows.Forms.TextBox()

Me.SuspendLayout()

'

'Button1

'

Me.Button1.Anchor=CType((System.Windows.Forms.AnchorStyles.TopOrSystem.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)

Me.Button1.Location=NewSystem.Drawing.Point(363,9)

Me.Button1.Name="Button1"

Me.Button1.Size=NewSystem.Drawing.Size(74,24)

Me.Button1.TabIndex=0

Me.Button1.Text="计算(&C)"

Me.Button1.UseVisualStyleBackColor=True

'

'Label1

'

Me.Label1.AutoSize=True

Me.Label1.Location=NewSystem.Drawing.Point(12,9)

Me.Label1.Name="Label1"

Me.Label1.Size=NewSystem.Drawing.Size(41,12)

Me.Label1.TabIndex=1

Me.Label1.Text="式子:

"

'

'TextBox1

'

Me.TextBox1.Anchor=CType((((System.Windows.Forms.AnchorStyles.TopOrSystem.Windows.Forms.AnchorStyles.Bottom)_

OrSystem.Windows.Forms.AnchorStyles.Left)_

OrSystem.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)

Me.TextBox1.Location=NewSystem.Drawing.Point(59,9)

Me.TextBox1.Name="TextBox1"

Me.TextBox1.Size=NewSystem.Drawing.Size(292,21)

Me.TextBox1.TabIndex=2

Me.TextBox1.Text="abs(-1)+2*(1+2)"

'

'TextBox2

'

Me.TextBox2.Anchor=CType((((System.Windows.Forms.AnchorStyles.TopOrSystem.Windows.Forms.AnchorStyles.Bottom)_

OrSystem.Windows.Forms.AnchorStyles.Left)_

OrSystem.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)

Me.TextBox2.Location=NewSystem.Drawing.Point(59,36)

Me.TextBox2.Name="TextBox2"

Me.TextBox2.Size=NewSystem.Drawing.Size(292,21)

Me.TextBox2.TabIndex=4

'

'Label2

'

Me.Label2.AutoSize=True

Me.Label2.Location=NewSystem.Drawing.Point(12,36)

Me.Label2.Name="Label2"

Me.Label2.Size=NewSystem.Drawing.Size(41,12)

Me.Label2.TabIndex=3

Me.Label2.Text="结果:

"

'

'算式子1

'

Me.算式子1.函数名=NewString(){"Abs","Acos","Asin","Atan","Atan2","BigMul","Ceiling","Cos","Cosh","Div","Mod","Exp","Floor","Log10","Log","Max","Min","Pow","Round","Sign","Sin","Sinh","Sqrt","Tan","Tanh","Truncate"}

Me.算式子1.常量=NewString(){"e=2.71828182845905","pi=3.14159265358979"}

Me.算式子1.式子=""

Me.算式子1.是否计算=False

Me.算式子1.显示每一步=True

Me.算式子1.结果=""

'

'TextBox3

'

Me.TextBox3.Location=NewSystem.Drawing.Point(59,64)

Me.TextBox3.Multiline=True

Me.TextBox3.Name="TextBox3"

Me.TextBox3.Size=NewSystem.Drawing.Size(292,93)

Me.TextBox3.TabIndex=5

Me.TextBox3.WordWrap=False

'

'Form1

'

Me.AutoScaleDimensions=NewSystem.Drawing.SizeF(6.0!

12.0!

Me.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font

Me.ClientSize=NewSystem.Drawing.Size(444,159)

Me.Controls.Add(Me.TextBox3)

Me.Controls.Add(Me.Button1)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1