VB,VBS,ASP都沒有反餘弦函數,解決方法:自己寫

今天用到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) 
Inverse Sine
(反正弦) Arcsin(X) = Atn(X / Sqr(-X * X + 1)) 
Inverse Cosine
(反餘弦) Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) 
Inverse Secant
(反正割) Arcsec(X) = Atn(X / Sqr(X * X - 1)) + Sgn((X) -1) * (2 * Atn(1)) 
Inverse Cosecant
(反餘割) Arccosec(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1)) 
Inverse Cotangent
(反餘切) Arccotan(X) = Atn(X) + 2 * Atn(1) 
Hyperbolic Sine
(雙曲正弦) HSin(X) = (Exp(X) - Exp(-X)) / 2  
Hyperbolic Cosine
(雙曲餘弦) HCos(X) = (Exp(X) + Exp(-X)) / 2 
Hyperbolic Tangent
(雙曲正切) HTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X)) 
Hyperbolic Secant
(雙曲正割) HSec(X) = 2 / (Exp(X) + Exp(-X)) 
Hyperbolic Cosecant
(雙曲餘割) HCosec(X) = 2 / (Exp(X) - Exp(-X)) 
Hyperbolic Cotangent
(雙曲餘切) HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X)) 
Inverse Hyperbolic Sine
(反雙曲正弦) HArcsin(X) = Log(X + Sqr(X * X + 1)) 
Inverse Hyperbolic Cosine
(反雙曲餘弦) HArccos(X) = Log(X + Sqr(X * X - 1)) 
Inverse Hyperbolic Tangent
(反雙曲正切) HArctan(X) = Log((1 + X) / (1 - X)) / 2 
Inverse Hyperbolic Secant
(反雙曲正割) HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X) 
Inverse Hyperbolic Cosecant
(反雙曲餘割) HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) +1) / X) 
Inverse Hyperbolic Cotangent
(反雙曲餘切) 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 符號函數

 

sgn(x)      求x的符號代碼,x爲負數時函數值爲-1 。

 

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  字符串處理函數      

 

3.1 刪除空格函數

 

Trim(字符串)         刪除字符串兩端空格字符。

 

LTrim(字符串)        刪除字符串左端空格字符。

 

RTrim(字符串)        刪除字符串右端空格字符。

 

3.2 截取字符函數

 

left(字符串,n)       截取字符串左端n個字符。

 

right(字符串,n)     截取字符串右端n個字符。

 

mid(字符串,n,m)      截取字符串中間從m個字符起的n個字符。

 

mid(字符串,m)        截取字符串第m個字符起至末尾的所有字符。  

 

3.3 字符測長函數

 

len(字符串)        返回字符串中所包含的字符個數。

 

3.4 字符生成函數

 

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  輸出格式函數

 

5.1 時間格式函數

 

Format(日期時間字符串,格式字符)   按照格式字符規定的格式輸出日期時間字符串。一般使用"yyyy-mm-ddhh:mm:ss"格式。

 

5.2 數值格式函數

 

Format(數值表達式,格式字符)       按照格式字符規定的格式輸出數值表達式的值。

 

formatNumber(x,2)     取小數點後兩位

 

6 交互式函數

 

6.1 輸入函數

 

InputBox(提示信息[,標題][,默認數據])   產生一個對話框作爲用戶輸入數據的界面,並返回輸入的內容。

 

6.2 輸出函數

 

MsgBox(信息內容[,界面風格參數][,標題]) 產生一個對話框作爲反饋一些信息用來提示用戶。

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章