This one will return a doube
Code:
        private double GetNumericValue(string sVal)
        {
            int iFirst, iEnd;
            char[] aNumbers = "1234567890.-".ToCharArray();
            string sRet = null;
            bool bMinus = false, bPoint=false;

            iFirst = sVal.IndexOfAny(aNumbers);
            iEnd = sVal.LastIndexOfAny(aNumbers);
            if (iEnd < 0)
                return 0;

            string subStr = sVal.Substring(iFirst, iEnd - iFirst + 1);
            iEnd = subStr.Length - 1;
            char cMinus = Convert.ToChar("-");
            char cPoint = Convert.ToChar(".");
            while (subStr.Length > 0)
            {
                if (subStr[0].Equals(cMinus))
                    bMinus = !bMinus;
                else if (subStr[0].Equals(cPoint))
                {
                    if (!bPoint)
                    {
                        bPoint = true;
                        sRet += subStr[0];
                    }
                }
                else
                    sRet += subStr[0];

                subStr = subStr.Substring(1, subStr.Length-1);
                if (subStr.Length <= 0)
                    break;
                iFirst = subStr.IndexOfAny(aNumbers);
                subStr = subStr.Substring(iFirst, subStr.Length - iFirst);
            }

            if (bMinus)
                sRet = "-" + sRet;
            return double.Parse(sRet);
        }