今天用到asp由经纬度计算距离,公式来自excel,里面有个ACOS,反余弦,但是运行报错,忽然意识到,VB,VBS,ASP好像都没有反余弦函数,它们的反三角函数只有一个反正切Atn,查来查去,还是回到CSDN才有靠谱的回答:
http://bbs.csdn.net/topics/80077169
先写了个反余弦,先用着,验证没错:
function acos(x) if abs(x)=>1 then acos=0 exit function end if acos=Atn(-x/Sqr(-x * x + 1)) + 2 * Atn(1) end function
下面先整理发布一下相关函数公式,以备用:(以下资料转载自网络,尚未完全验证,请用到的自己验证)
’============================================================================================
ASP常用函数列表
反正弦: y = Atn(x / Sqr(-x * x + 1)) 反余弦:0<|X|<1 y = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1) 反正切: y = Atn(x) 反余切: y = Atn(x) + 2 * Atn(1)
下列是由固有数学函数派生的非固有数学函数:
函数派生的等效公式
Secant(正割)Sec(X)=1/Cos(X)
Cosecant(余割)Cosec(X)=1/Sin(X)
Cotangent(余切)Cotan(X)=1/Tan(X)
InverseSine(反正弦)Arcsin(X)=Atn(X/Sqr(-X*X+1))
InverseCosine(反余弦)Arccos(X)=Atn(-X/Sqr(-X*X+1))+2*Atn(1)
InverseSecant(反正割)Arcsec(X)=Atn(X/Sqr(X*X-1))+Sgn((X)-1)*(2*Atn(1))
InverseCosecant(反余割)Arccosec(X)=Atn(X/Sqr(X*X-1))+(Sgn(X)-1)*(2*Atn(1))
InverseCotangent(反余切)Arccotan(X)=Atn(X)+2*Atn(1)
HyperbolicSine(双曲正弦)HSin(X)=(Exp(X)-Exp(-X))/2
HyperbolicCosine(双曲余弦)HCos(X)=(Exp(X)+Exp(-X))/2
HyperbolicTangent(双曲正切)HTan(X)=(Exp(X)-Exp(-X))/(Exp(X)+Exp(-X))
HyperbolicSecant(双曲正割)HSec(X)=2/(Exp(X)+Exp(-X))
HyperbolicCosecant(双曲余割)HCosec(X)=2/(Exp(X)-Exp(-X))
HyperbolicCotangent(双曲余切)HCotan(X)=(Exp(X)+Exp(-X))/(Exp(X)-Exp(-X))
InverseHyperbolicSine(反双曲正弦)HArcsin(X)=Log(X+Sqr(X*X+1))
InverseHyperbolicCosine(反双曲余弦)HArccos(X)=Log(X+Sqr(X*X-1))
InverseHyperbolicTangent(反双曲正切)HArctan(X)=Log((1+X)/(1-X))/2
InverseHyperbolicSecant(反双曲正割)HArcsec(X)=Log((Sqr(-X*X+1)+1)/X)
InverseHyperbolicCosecant(反双曲余割)HArccosec(X)=Log((Sgn(X)*Sqr(X*X+1)+1)/X)
InverseHyperbolicCotangent(反双曲余切)HArccotan(X)=Log((X+1)/(X-1))/2
以N为底的对数LogN(X)=Log(X)/Log(N)
VBscript(ASP)常用函数
VBscript(ASP)常用函数:
1.数值型函数:
abs(num): 返回绝对值
sgn(num): num>0 1; num=0 0; num<0 -1;判断数值正负
hex(num): 返回十六进制值 直接表示:&Hxx 最大8位
oct(num): 返回八进制值 直接表示:&Oxx 最大8位
sqr(num): 返回平方根num>0
int(num): 取整int(99.8)=99; int(-99.2)=100
fix(num): 取整fix(99.8)=99; fix(-99.2)=99
round(num,n): 四舍五入取小数位round(3.14159,3)=3.142 中点数值四舍五入为近偶取整 round(3.25,1)=3.2
log(num): 取以e为底的对数 num>0
exp(n): 取e的n次幂 通常用 num^n
sin(num): 三角函数,以弧度为值计算 (角度*Pai)/180=弧度 con(num);tan(num); atn(num)
2.字符串函数:
len(str):计算字符串长度 中文字符长度也计为一!
mid(str,起始字符,[读取长度]):截取字符串中间子字符串
left(str,nlen):从左边起截取nlen长度子字符串
right(str,nlen):从右边起截取nlen长度子字符串
Lcase(str):字符串转成小写
Ucase(str):字符串转成大写
trim(str):去除字符串两端空格
Ltrim(str):去除字符串左侧空格
Rtrim(str):去除字符串右侧空格
replace(str,查找字符串,替代字符串,[起始字符,替代次数,比较方法]):替换字符串 注:默认值:起始字符 1;替代次数 不限;比较方法 区分大小写(0)
InStr([起始字符,]str,查找字符串[,比较方法]):检测是否包含子字符串 可选参数需同时选 返回起始位置
InStrRev(str,起始字符][,比较方法]):反向检测是否包含子字符串 返回起始位置
space(n):构造n个空格的字符串
string(n,str):构造由n个str第一个字符组成的字符串
StrReverse(str):反转字符串
split(str,分割字符串[,次数][,比较方法]):以分割字符串为分割标志将字符串转为字符数组
3.数据类型转换函数:
Cint(str):转换正数True -1;False 0;日期 距离1899/12/31天数;时间 上午段 0;下午段 1;
Cstr(str):日期 输出格式 yyyy/mm/dd;时间 输出格式 Am/Pm hh:mm:ss
Clng(str):与Cin()类似
Cbool(num):num不为零 True;反之 False
Cdate(str):转换日期格式 0:#Am 12:00:00#;正数 距离1899/12/31天数的日期;浮点数 日期+小数时间
Cbyte(num):num<255转换为字节
Csng(str):转换为单精度数值
Cdbl(str):转换为双精度数值
Ccur(str):转换为现金格式
4.时间函数:
date:取系统当前日期
time:取系统当前时间
now:取系统当前时间及日期值Datetime类型
timer:取当前时间距离零点秒值,计时器,可计算时间差
DateAdd(间隔单位,间隔值,日期):推算相邻日期
DateDiff(间隔单位,日期一,日期二):计算时间差 日期二-日期一
Datepart(间隔单位,日期):计算日期的间隔单位值
Dateserial(date):输出日期值(按序列计算)
Timeserial(time):输出时间值(按序列计算)
DateValue(datetime):取出字符串中日期值
Timevalue(datetime):取出字符串中时间值
weekday(date):计算星期几
MonthName(date):输出月分名
year(datetime):截取年份
month(datetime):截取月份
day(datetime):截取日
hour(datetime):截取小时
minute(datetime):截取分钟
second(datetime):截取秒
5.其它函数:
Array(unit,..):动态生成数组
Asc(str):输出字符串第一个字符的ASCII码
Chr(asc):转换ASCII为字符 Enter:Chr(13)&Chr(10)
Filter(数组名称,关键字符串,[,包含][,比较方法]):将字符串数组中含有关键字符串的元素存成新的数组(默认) [包含]为false则取不包含的元素
Join(ArrayName):将数组中元素连成字符串
Ubound(ArrayName[,维数]):取得数组相应维数的上界
Lbound(ArrayName[,维数]):取得数组相应维数的下界 一般为0
Randmize n:启动随机数种子
Rnd(n):取得随机数,n>0或为空,取序列下一随机值,n<0,随机值相同,n=0,生产与上一随机值相同的数取介于A和B之间的随机正数C,公式:C=Int((B-A+1)*Rnd+A)条件(B>A)
ASP六大对象常用语句示范:
Response:
Response.write StrVar/"String":向网页写出参数值或字符串 等同于在Html标记中嵌入
Response.End:停止页面编译,并将已经编译内容输出到浏览器
Response.Buffer=True|False:页面编译时是否使用缓存的设置,一般在页面头部设置
Response.Flush:强制输出页面已编译部分内容
Response.Clear:将缓冲区内的数据清除
Response.Redirect URL:停止页面编译或输出,转载指定所需页面
Response.IsClientConnected:返回True|False,检测用户是否还处于连接状态
Response.Charset(CharsetName):设置页面编码类型,即
Response.ContentType [= ContentType ]:设置页面文件类型,同上
Response.Expires [= number]:设置页面失效时间,单位分钟
Response.ExpiresAbsolute [= [date] [time]]:设置页面失效的绝对时间
Response.Status = StatusDescription:设置页面状态描述
Request:
Request("PassStrName"):读取网页传递值,包括表单及以?PassStrName=value&PassStrName_n=value_n形式
Request[.collection|property|method](variable)
Request.querystring("PassStrName"):读取Get方法传递的表单值和?PassStrName=value
Request.QueryString(Varible)[(Index).Count]
Request.form("PassStrName"):读取Post方法传递的纯表单域的值
Request.Form(Parameter)[(Index).Count]
Request.ServerVaribles(Server Environment Variable):读取客户端系统环境变量,详见参考
Request.BinaryRead(Count):读取指定字节数的传送值
Request.TotalBytes:查询体的长度,以字节为单位,只读
注:同名表单如:CheckBox如有多项值,则传递数组.
Session:(用户全局变量)
Session("SesName")=value:存储Session变量值,也可读取该值
Session("SesName")=Empty:判断Session值是否存在的两种方法
IsEmpty(Session("SesName"))=True|False:判断Session值是否存在的两种方法
Session.TimeOut=num:设置Session变量的存在时效,单位分钟
Session.Abandon:清除所有Session变量值
Session.SessionID:Session变量的ID序列号,只读
Application:(应用程序全局变量)
Application("AppName")=value:存储Application变量值,也可读取该值
Application("AppName")=Empty:判断Application值是否存在的两种方法
IsEmpty(Application("AppName"))=True|False:判断Application值是否存在的两种方法
Application.Lock:Application变量值锁定,防止同时更改变量值
Application.UnLock:Application变量值解锁,允许更改变量值
注:Session与Application变量都可以用来存储数组和系统对象,引用方法是变量名相当于数组名而已,
但不能直接改变其值,需要借助临时数组修改值后,再赋给Session与Application变量
Server:
Server.MapPath("FileUrl"):映射文件名的服务器站点绝对地址,Path=Server.MapPath(./)可以得到虚拟目录根路径
Server.HtmlEncode("string"):转换为可以直接显示带Html格式的字符串,如:<,>等
Server.URLEncode( "string"):转换为浏览器地址编码
set Var=Server.CreatObject("ObjName"):创建对象变量
Server.ScriptTimeout = NumSeconds:ASP程序页面执行时限,以秒为单位
Cookies: 存储在用户本机的临时变量,每个Cookie的最大字节4KB,最多可以有300个Cookie 1.2MB
Response.cookies("StrCookieName")=value:存储Cookie变量值,也可读取该值
Response.cookies("StrCookieName")="":判断是否为空
Response.cookies("StrCookieName").Expires=Date:变量有效期,以天为单位,小于当前时间立即失效
Response.Cookies(Cookie[(key).Attribute]):标准语法
ObjectContext 控制ASP的事务处理
ObjectContext.OnTransactionAbort:由放弃的事务处理事件激发,在脚本完成处理后发生
ObjectContext.OnTransactionCommit:由成功的事务处理事件激发,在脚本完成处理后发生
ObjectContext.SetAbort:显式的放弃一次事务处理
ObjectContext.SetComplete:覆盖前面任何调用ObjectContext.SetAbort方法的调用
1 数学函数
1.1 取整函数
int(x)取不大于x的最大整数。
fix(x)舍去x的小数部分。
1.2 绝对值函数
abs(x)求x的绝对值。
1.3 符号函数
1.4 平方根函数
sqr(x)求x的算术平方根,x必须大于0 。
1.5 指数函数
exp(x)求以e为底x为指数的值。
1.6 对数函数
log(x)求以e为底的对数函数值。
1.7 三角函数
sin(x)求x的正弦值。
con(x)求x的余弦值。
tan(x)求x的正切值。
Atn(x)求x的反正切值。
1.8 数制转换函数
hex(x)十进制转换为对应的十六进制数。
oct(x)十进制转换为对应的八进制数。
2 日期时间函数
2.1 系统日期时间函数
now()读取系统当前日期时间。
date()读取系统当前日期。
time()读取系统当前时间。
2.2 日期时间分解函数
year(日期字符串) 返回日期字符串中的年份。
month(日期字符串) 返回日期字符串中的月份。
day(日期字符串) 返回日期字符串中的日子。
weekday(日期字符串) 返回日期字符串中的星期。
hour(时间字符串) 返回时间字符串中的小时。
minute(时间字符串) 返回时间字符串中的分钟。
secont(时间字符串) 返回时间字符串中的秒数。
2.3 日期时间数值化函数
dateValue(日期字符串) 把日期字符串转换为当日至1889-12-30的天数。
timeValue(时间字符串) 把时间字符串转换为0~1之间变体型时间值。
2.4 日期时间运算函数
dateSerial(年,月,日)把年月日连接成日期字符串。
timeSerial(时,分,秒)把时分秒连接成时间字符串。
timer() 计算午夜起至当前系统时间所历经的秒数。
3 字符串处理函数
Trim(字符串) 删除字符串两端空格字符。
LTrim(字符串) 删除字符串左端空格字符。
RTrim(字符串) 删除字符串右端空格字符。
left(字符串,n) 截取字符串左端n个字符。
right(字符串,n) 截取字符串右端n个字符。
mid(字符串,n,m) 截取字符串中间从m个字符起的n个字符。
mid(字符串,m) 截取字符串第m个字符起至末尾的所有字符。
3.3 字符测长函数
len(字符串) 返回字符串中所包含的字符个数。
string(n,字符串) 生成n个字符串首字母。
space(n) 生成n个空格。
3.5 大小写转换函数
Ucase(字符串) 把字符串中的字母转换为大写字母。
Lcase(字符串) 把字符串中的字母转换为小写字母。
3.6 字符转换函数
chr(表达式) 求以表达式值为ASCII码的对应字符。
asc(字符串) 求字符串中首字符的ASCII码。
val(字符串) 把字符串中的数字转换为对应的数值。
str(数值表达式) 把数值表达式的值转换为对应的字符串。
4 数据类型转换函数
4.1 转整型函数
Cint(数值表达式) 把数值表达式的值转换为整型,小数四舍五入。
4.2 转长整型函数
Clng(数值表达式) 把数值表达式值转换为长整型,小数四舍五入。
4.3 转货币型函数
Ccur(数值表达式) 把数值表达式值转换为货币型,小数四舍五入。
4.4 转双精度型函数
Cdbl(数值表达式) 把数值表达式值转换为双精度型。
4.5 转单精度型函数
Csng(数值表达式) 把数值表达式值转换为单精度型。
4.6 转日期型函数
Cdate(表达式) 把表达式值转换为日期型。
4.7 转变体型函数
Cvar(表达式) 把表达式值转换为变体型。
5.1 时间格式函数
Format(日期时间字符串,格式字符) 按照格式字符规定的格式输出日期时间字符串。一般使用"yyyy-mm-ddhh:mm:ss"格式。
5.2 数值格式函数
Format(数值表达式,格式字符) 按照格式字符规定的格式输出数值表达式的值。
formatNumber(x,2) 取小数点后两位
6 交互式函数
6.1 输入函数