公式计算器支持函数和常量
表达式定义在PCCAD中的超级属性块定义、标题栏、明细表、附加栏的定义、以及参数化设计、哑图参数化系统、天河公式计算器中大量地使用。为了帮助用户正确地使用这些功能,下面列出目前版本可支持的函数和常量:
一、算术运算
1. 运算符
1) 左右括号:()
2) 加、减、乘、除:+、-、*、/
3) 乘方:^
2. 常数
1) 圆周率:PI=3.14159265359……
2) e:exp=2.71828
3. 函数
1) 开方:sqrt(real):real>=0
2) 三角函数:
(1) sin(real)、cos(real):real度,任意实数。
(2) tan(real):real度,任意实数,但不能为90的倍数。
(3) arcsin(real) 、arccos(real):real任意实数,1>=real>=-1。
(4) arctan(real)、ctan(real):real任意实数
3) 对数函数:ln(real)、log(real)
4) 精度运算:
(1) int(real) 例:int(10.05) 返回10
(2) deci(real) 例:deci(10.05) 返回0.05
(3) prec(real, int) 例:prec(10.05, 1) 返回10.1
(4) mod(int1, int2) 例:mod(100, 30) 返回10
5) 阶乘:(int)! 例:(4)! 返回24
二、字符运算
1. 字符串表达式运算的函数
1) StrCase (string, which) 将字符串中的所有字母转换成大写或小写,然后返回修改后的字符串。
参数 String:字符串,被转换的字符串。
which:bool类型,为 Fasle时返回小写。缺省为Ture。
例:StrCase (" adGFCbb", N) 返回:adgfcbb
StrCase (" abcxyz", T) 返回:ABCXYZ
T和N是系统定义的两个全局常量,分别表示:True 和 Fasle,下同。
2) StrCat ( string1, string2……) 将两个或多个字符串拼接成一个字符串,然后返回新字符串。
参数 String1:被合并的第一个字符串。
String1:被合并的第二个字符串。
……
例:StrCat (" abc", " xyz") 返回:abcxyz
StrCat ("φ", " 100") 返回:φ100
3) StrLen (string) 返回代表字符串中字符数目的整数。
参数 String:字符串。
例:StrLen (" abcxyz") 返回:6
4) StrSub (string, start, length, which) 返回字符串的子串。
参数 String:字符串。
Start:子串的起始位置。缺省为1。
Length:子串的长度。当length=-1时,从开始处取到字符串的尾部或头部。
which:which =T时,从前往后取子串;which =N时,从后往前取子串。缺省为T。
例:StrSub (" GB70-85 M5X30", 9, –1, T) 或
StrSub (" GB70-85 M5X30" , 1, 5, N) 返回:M5X30
(1) Left(string, length)相当于StrSub (string, 1, length, T)
(2) Right(string, length)相当于StrSub (string, 1, length, N)
5) StrSubN (string, format, number) 按格式format取得字符串String的第几部分Number。
参数 String:字符串,被转换的字符串。
format:字符串,分隔字符串的子串。
Number:整数,第几部分。
例:StrSubN ("GB70-85 M5X10", " ", 1) 返回"GB70-85"
StrSubN ("GB70-85 M5X10", " ", 2) 返回”M5X10”
6) StrTrim (character-set, string, which) 从字符串的“开始”或“末尾”位置删除指定的字符串。
参数 character-set: 字符串,列出要被删除的字符。
String:字符串,从中删除 character-set。
Which:=Ture时,删除头部。缺省为T。
例:StrTrim (" \t\n", " \t\n\t\nSTR ", T) 返回:\t\nSTR
StrTrim (" \t\n", "STR \n\t", N) 返回:STR
7) StrTrimS (string) 把字符串string的“头”和“尾”部的空格删除。
参数 String:字符串。
例:StrTrimS (" STR ") 返回:STR
8) StrMismatch (str1, str2, pos1, pos2, which) 返回两个字符串的最长公共前缀的长度,指定位置的字符。
参数 str1:第一个要匹配的字符串。
str2:第二个要匹配的字符串。
pos1:整数型,从第一个字符串的该处开始搜索。缺省为1
pos2:整数型,从第二个字符串的该处开始搜索。缺省为1
which:如果该参数指定为 T 则不考虑大小写,否则区分大小写。缺省为T。
例:StrMismatch ("VL-FUN", "VL-VAR", 1, 1, T) 返回3
StrMismatch ("vl-fun", "avl-var", 1, 1, T) 返回0
StrMismatch ("vl-fun", "avl-var", 1, 2, T) 返回3
StrMismatch ("VL-FUN", "Vl-vAR", 1, 1, N) 返回1
StrMismatch ("VL-FUN", "Vl-vAR", 1, 1, T) 返回3
9)StrFind (pattern, string, start-pos) 在字符串中搜索指定的模式。
参数 pattern:字符串,包含要搜索的子串。
String:字符串,在其中搜索 pattern。
start-pos:整数型,表示搜索的开始位置。缺省为1。
返回值:整数,表示找到指定 pattern 的位置。如果未找到子串,则返回 -1。
例:StrFind ("foo", "pfooyey on you", 1) 返回2
StrFind ("who", "pfooyey on you", 1) 返回-1
StrFind ("foo", "fooey-more-fooey", 2) 返回12
10)StrReplace (new-str, pattern, string, start-pos, all) 用一个字符串替换另一个字符串中的子串。
参数 new-str:字符串,用它来替换 pattern。缺省为“”(空串)
Pattern:字符串,包含要被替换的字符串。
String:字符串,在其中查找 pattern。
start-pos:整数型,标志开始搜索的位置。缺省为1
All:为True时,替换所有的子串;否则,仅替换字符串中第一次出现的子串。缺省为T。
返回值: 完成替换后string的值。
注:搜索是区分大小写的。
例:StrReplace ("Obi-wan", "Ben", "Ben Kenobi") 返回"Obi-wan Kenobi"
StrReplace ("Obi-wan", "Ben", "ben Kenobi") 返回"ben Kenobi" (没有进行替换)
StrReplace ("Obi-wan", "Ben", "Ben Kenobi Ben") 返回"Obi-wan Kenobi Obi-wan "
StrReplace ("Obi-wan", "Ben", "Ben \"Ben\" Kenobi", 3) 返回"Ben \"Obi-wan\" Kenobi"
(1) StrDelete(pattern, string) 相当于StrReplace (“”, pattern, string, 1, T)
11)StrInsert (string, new-str, pos) 在字符串string指定的位置pos后面插入给定的字符串new-str
Pos=0时,在第一个字符前插入。Pos>strlen(string)时,插入到字符串的尾部。
三、类型转换
1)R2S (real, pre) 从实数到字符串的转换。
参数 real:实数。
Pre:整数,精度。-1时全部转换,缺省为-1。
返回值: 字符串。
例: R2S (10.02, 2) 返回: “10.02”
R2S (0.021, 2) 返回: “0.02”
R2S (0.0213, -1) 返回: “0.0213”
2) S2R (string) 从字符串到实数的转换。
参数 string :字符串。
返回值:实数。
例: S2R (" 10.02") 返回: 10.02
S2R (" A0.021") 返回: 0
S2R (" 0.112AB") 返回: 0.112
S2R (" 010A") 返回: 10
四、逻辑运算
1. 逻辑运算
1)AND运算符:AND的结果为Ture时返回1,Fasle时返回0。例:(x > 1) AND (x < 2),当2>x >1时,表达式运算结果为1否则为0。
2)OR运算符
3)NOT(EXP)
2. 比较运算
1)数值比较:>、>=、=、<=、<、<>
2)字符比较:LIKE、EQUAL
3.IF函数
1)IF(EXP1,EXP2,EXP2):如果EXP1的计算结果非0或非空,则(THEN)返回EXP1的运算结果(数值型);否则(ELSE)返回EXP3的运算结果(数值型)。
2)例如:IF((A > 100),(100*2),(100*3)),当A > 100时结果为:200,否则为300。
4.其它
1)支持与其它表达式的混合运算。例:(EXP1 AND EXP2)+(EXP3 AND EXP4)
2)AND、OR等做为运算符时,前后加“空格”分隔。
3)NOT为一元函数。
【注】
a)函数和常量大小写敏感。
b)由于天河公式计算器中正负号的优先级高,所以输入公式时应注意。
如:a-2 可书写为 a^-2,
-a2 应书写为 -(a^2)
c)公式计算器目前无法进行大数计算,小数点前后位数不能超过15位。
d)一个汉字占2个字节。