0

我的字符串值示例

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"))
4

3 回答 3

3

试试这个代码

        string amtStr = "{100,000,000.00}";
        amtStr = amtStr.Replace("{", "-").Replace("}", "").Replace("(", "-").Replace(")", "").Trim() ;
        double amt = Convert.ToDouble(amtStr);
于 2013-12-18T02:07:00.910 回答
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);
于 2013-12-18T02:17:26.360 回答
1

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

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

在这里,我们删除前导和尾随{}s,然后使用 将结果字符串解析为双精度数Double.ParseToCharArray包含在内,因此我们可以将要删除的字符指定为一个字符串而不是字符数组。

于 2013-12-18T01:48:35.353 回答