一般数值中有可能包括+-,.0-9数字,所以使用正则表达式来判断和获取是比较方便的
示例代码:
public static SuccessFailResult<decimal> getDecimalFromString(string pStr) {
    string pNumStr = Regex.Replace(pStr, @"[^\d.\-\+,]", "");  //把非数字替换掉
    if (Regex.IsMatch(pNumStr, @"^[+-]?[\d,]*[.]?\d*$")) {
        decimal pReturn = decimal.Parse(pNumStr);
        return SuccessFailResult<decimal>.createSuccess(pReturn);
    } else {
        return SuccessFailResult<decimal>.createFail(pStr + " is not a legitimate number");
    }

}

测试代码:
string pStr = "+1,234.5";//测试数据还有-1,234.5    //abcd34.4  都能正确识别
var pResult = ConvertHelper.getDecimalFromString(pStr);
if (pResult.mResult == EMSuccessFail.resultFail) {
    MessageBox.Show(pResult.mInfo);
} else {
    MessageBox.Show(pResult.mValue.ToString());
}
//当使用字符串+-123.4时,也能返回不是合法数字的错误信息