Exit Function End If strPWR1 = strPWRReturn End If If IsNumeric(strPWR2) = False Then strPWRReturn = CalculateString(strPWR2, ensPWRSub, lpLevel + 1) If ensPWRSub <> lpSucceed Then lpReturn = ensPWRSub Exit Function End If strPWR2 = strPWRReturn End If strCallback = Trim(Str(GetRoot(Val(strPWR1), Val(strPWR2)))) GoTo EndExtract End If ' 计算括号中的内容 strCallback = CalculateString(strReplace, enReturnSub, lpLevel + 1) If enReturnSub <> lpSucceed Then lpReturn = enReturnSub Exit Function End If ' 如果有函数的话,就按照函数定义去对计算完的内容处理。 Select Case Trim(UCase(strSpecial3)) Case Trim(UCase("ihcos")) lpX = Val(strCallback) lpX = Log(lpX + Sqr(lpX * lpX - 1)) If bpRadianWay = False Then lpX = ConvertToDegree(lpX) End If strCallback = Trim(Str(lpX))
lpX = Atn(lpX / Sqr(-lpX * lpX + 1)) If bpRadianWay = False Then lpX = ConvertToDegree(lpX) End If strCallback = Trim(Str(lpX)) GoTo EndExtract Case Trim(UCase("itan")) lpX = Val(strCallback) lpX = Atn(lpX) If bpRadianWay = False Then lpX = ConvertToDegree(lpX) End If strCallback = Trim(Str(lpX)) GoTo EndExtract End Select Select Case Trim(UCase(strSpecial)) Case Trim(UCase("sqr")) If Val(strCallback) < 0 Then lpReturn = lpRunError Exit Function End If strCallback = Trim(Str(Sqr(Val(strCallback)))) GoTo EndExtract Case Trim(UCase("abs")) strCallback = Trim(Str(Abs(Val(strCallback)))) GoTo EndExtract Case Trim(UCase("cos"))
If bpRadianWay = True Then strCallback = Trim(Str(Cos(Val(strCallback)))) Else strCallback = Trim(Str(Cos(ConvertToRadian(Val(strCallback))))) End If GoTo EndExtract Case Trim(UCase("exp")) strCallback = Trim(Str(Exp(Val(strCallback)))) GoTo EndExtract Case Trim(UCase("log")) strCallback = Trim(Str(Log(Val(strCallback)) / Log(lpLogBase))) GoTo EndExtract Case Trim(UCase("rnd")) strCallback = Trim(Str(Rnd(Val(strCallback)))) GoTo EndExtract Case Trim(UCase("sgn")) strCallback = Trim(Str(Sgn(Val(strCallback)))) GoTo EndExtract Case Trim(UCase("sin")) If bpRadianWay = True Then strCallback = Trim(Str(Sin(Val(strCallback)))) Else strCallback = Trim(Str(Sin(ConvertToRadian(Val(strCallback))))) End If GoTo EndExtract Case Trim(UCase("opp"))
strCallback = Trim(Str(-Val(strCallback))) GoTo EndExtract Case Trim(UCase("tan")) If bpRadianWay = True Then strCallback = Trim(Str(Tan(Val(strCallback)))) Else strCallback = Trim(Str(Tan(ConvertToRadian(Val(strCallback))))) End If GoTo EndExtract Case Trim(UCase("sec")) If bpRadianWay = True Then lpX = Val(strCallback) Else lpX = ConvertToRadian(Val(strCallback)) End If lpX = 1 / Cos(lpX) strCallback = Trim(Str(lpX)) GoTo EndExtract Case Trim(UCase("csc")) If bpRadianWay = True Then lpX = Val(strCallback) Else lpX = ConvertToRadian(Val(strCallback)) End If lpX = 1 / Sin(lpX) strCallback = Trim(Str(lpX))