/// <summary> /// 判斷輸入的數是否是科學計數法。如果是的話,就會將其換算成整數並且返回,否則就返回false。 /// </summary> /// <param name="num"></param> /// <param name="CompleteNum"></param> /// <returns></returns> private bool ChkNum(string num, ref decimal CompleteNum) { bool result = false; bool resultSymbol = num.Contains("*"); bool result0 = num.Contains("^"); if ((resultSymbol == true) && (result0 == true)) { //當數字中有*和^的時候,進行下面的判斷 int IntSymbol = num.IndexOf("*"); int Symbol0 = num.IndexOf("^"); if (((Symbol0 - IntSymbol) == 3)) {//當*在^前面的時候 string numA = num.Substring(0, IntSymbol);//截取*號前面的數字(基數); string numB = num.Substring(IntSymbol+1, Symbol0 - IntSymbol-1);//截取10; string numC = num.Substring(Symbol0+1, num.Length - Symbol0-1);//獲得冪次數 Regex regNum0 = new Regex(@"^(\-|\+)?\d+(\.\d+)?$"); Regex regNum2 = new Regex(@"^-[1-9]\d*$|^[1-9]\d*$"); if ((regNum0.IsMatch(numA)) && (numB == "10") && (regNum2.IsMatch(numC))) { decimal dcNumA; decimal.TryParse(numA,out dcNumA); decimal dcNumC; decimal.TryParse(numC, out dcNumC);//將冪次數轉換成decimal類型 decimal zhengshu = 10; if (dcNumC > 0) {//當冪次數為整數的時候 for (int i = 0; i < dcNumC - 1; i++) { zhengshu *= 10; } } else {//當冪次數為負數的時候 for (int i = 0; i < Math.Abs(dcNumC) + 1; i++) { zhengshu /= 10; } } CompleteNum = dcNumA * zhengshu; result = true; } else { result = false; } } else { result = false; } } else { result = false; } return result; }