AU3 编写 四则混合运算

$strParam = "23+45-78*12/27+34"

;/
;除法运算函数
Func _DivAll($a)
If StringInStr($a, "/") <> 0 Then
$div = StringSplit($a, "/", 2);分割含有 “/” 运算符的数字
$div1 = $div[0]
For $i = 1 To UBound($div) - 1
$div1 /= $div[$i];得到连续的相除的数值 例如:12/27
Next
Return $div1
EndIf
EndFunc ;==>_DivAll

;*
;乘法运算函数
Func _MulDiv($a)
$mul = 1
If StringInStr($a, "*") <> 0 Then
$mult = StringSplit($a, "*", 2);分割含有 “*” 预算符的数字
For $i = 0 To UBound($mult) - 1
If StringInStr($mult[$i], "/") <> 0 Then
$mult[$i] = _DivAll($mult[$i]);自动替换有 “/” 的数值结果 例如:78*12/27 变为
78*0.44444
EndIf
Next
For $i = 0 To UBound($mult) - 1
$mul *= $mult[$i];得到连续的相乘的数值
Next
Return $mul
Else
Return _DivAll($a)
EndIf
EndFunc ;==>_MulDiv
;-
;减法运算函数
Func _LessSplit($a)
If StringInStr($a, "-") <> 0 Then
$lesssplit = StringSplit($a, "-", 2);分割含有 “-” 运算符的数字
For $i = 0 To UBound($lesssplit) - 1
If StringInStr($lesssplit[$i], "*") <> 0 Then
$lesssplit[$i] = _MulDiv($lesssplit[$i]);自动替换有 "*"、"\" 的数值结果 例如:45
-78*12/27 变为45-(78*0.44444)
ElseIf StringInStr($lesssplit[$i], "/") <> 0 Then
$lesssplit[$i] = _MulDiv($lesssplit[$i])
EndIf
Next
$less0 = $lesssplit[0]
$less = 0
For $i = 1 To UBound($lesssplit) - 1
$less += $lesssplit[$i]
Next
$less_end = $less0 - $less;得到连续的相减的数值
Return $less_end
Else
Return _MulDiv($a)
EndIf
EndFunc ;==>_LessSplit
;~ MsgBox(0,"", _LessSplit("-11/1-2*1"))

;+
;加法运算函数
Func _AddSplit($a)
$addsum = 0
If StringInStr($a, "+") <> 0 Then
$addsplit = StringSplit($a, "+", 2);分割含有 “+” 运算符的数字
For $i = 0 To UBound($addsplit) - 1
If StringInStr($addsplit[$i], "-") <> 0 Then
$addsplit[$i] = _LessSplit($addsplit[$i]);自动替换有 "-"、"*"、"\" 的数值结果 例
如:23+45-78*12/27 变为23+(45-(78*0.44444))+...
ElseIf StringInStr($addsplit[$i], "*") <> 0 Or StringInStr($addsplit[$i], "/") Then
$addsplit[$i] = _LessSplit($addsplit[$i]);
EndIf
Next
For $i = 0 To UBound($addsplit) - 1
$addsum += $addsplit[$i];累加得到值
Next
Return Round($addsum, 1);精确到小数点一位
Else
Return _LessSplit($a)
EndIf
EndFunc ;==>_AddSplit

MsgBox(0, "运算值为:", _AddSplit($strParam))
;~ MsgBox(0, "运算值为:", _AddSplit("1/2*1-1*2+6"))

 

 

你可能感兴趣的:(职场,休闲,au3,混合运算)