将带有括号的字符串量值转换为double

时间:2013-12-18 01:31:46

标签: c# string format money-format

我的字符串值示例

string amtStr = "{100,000,000.00}";

预期结果/输出

double amt = -100,000,000.00

我尝试了但是它给了我错误"Cannot convert from 'string' to 'System.IFormatProvider'"

Convert.ToDouble(txtAmount.Text.ToString("#,0.00;-#,0.00"))

3 个答案:

答案 0 :(得分:3)

试用此代码

        string amtStr = "{100,000,000.00}";
        amtStr = amtStr.Replace("{", "-").Replace("}", "").Replace("(", "-").Replace(")", "").Trim() ;
        double amt = Convert.ToDouble(amtStr);

答案 1 :(得分:2)

无需替换大括号{},默认情况下无法转换。如果它是一个正确的会计数字格式,那么你可以像这样使用NumberStyles

string amtStr = "(100,000,000.00)";
NumberStyles styles = NumberStyles.AllowParentheses | NumberStyles.AllowTrailingSign | NumberStyles.Float | NumberStyles.AllowThousands;
string outputStr = double.Parse(amtStr, styles).ToString("#,0.00;-#,0.00");
double outputDbl = double.Parse(outputStr);

答案 2 :(得分:1)

根据问题的标题,您可能需要的是:

amt = Double.Parse(amtStr.Trim("{}".ToCharArray()))

在这里,我们删除前导和尾随{},然后使用Double.Parse将结果字符串解析为double。包含ToCharArray,因此我们可以将chars指定为一个字符串而不是char数组。