添加两个值 - 输入字符串格式不正确

时间:2015-01-14 14:00:00

标签: c# string int

我从数据阅读器读取数据并希望为此添加一些值。它给我错误

  

输入字符串的格式不正确

这是我的代码

int OldAmount = 0;
while (dr.Read())
{
   OldAmount = dr.GetInt32(0);
}
string CurrentAmount = (Convert.ToInt32(amnt) + Convert.ToInt32(OldAmount)).ToString();

其中amntstring且值23000

有什么不对吗?

4 个答案:

答案 0 :(得分:0)

Convert.ToInt取决于您的计算机CurrentCulture
如果您的小数点分隔符.可以获得该异常。

您可以Int.Parse使用字符串格式规范,例如Int32.Parse("23000.00", NumberStyles.AllowDecimalPoint);

但您确定int不是decimal吗?

答案 1 :(得分:0)

您正在转换为int,而您有小数。 将convert.ToInt32(amnt)更改为convert.ToDecimal(amnt)

答案 2 :(得分:0)

OldAmount已经是一个整数,你不需要再次转换它。尝试:

string CurrentAmount = (int.Parse("23000.00", NumberStyles.AllowDecimalPoint) + OldAmount).ToString();

或者只是使用小数。

答案 3 :(得分:0)

Convert.ToInt32 method使用您当前的文化设置。

您的CurrentCultureNumberDecimalSeparator property看起来不是.或/并且由于Convert.ToInt32默认使用NumberStyles.Integer,您需要NumberStyles.AllowDecimalPoint还要指出小数点分隔符。

您可以使用Int32.Parse(String, NumberStyles, IFormatProvider) overload代替提供;

int amnt = Int32.Parse("23000.00",
                       NumberStyles.Integer | NumberStyles.AllowDecimalPoint, 
                       CultureInfo.InvariantCulture); //23000

然后你就可以使用这个值了;

string CurrentAmount = (amnt + OldAmount).ToString();

顺便说一下,由于您的字符串没有任何尾随或前导空格或前导符号,因此在您的情况下使用NumberStyles.Integer是不必要的。你可以做;

int amnt = Int32.Parse("23000.00",
                       NumberStyles.AllowDecimalPoint, 
                       CultureInfo.InvariantCulture); //23000