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

Add two values-input string was not in a correct format

我从数据 reader 中读取数据并想为 that.It 添加一些值给我错误

input string was not in a correct format

这是我的代码

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

其中 amntstring 并且具有 23000 值。

有什么问题吗?

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

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

但是你确定它应该是 int 而不是 decimal 吗?

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

OldAmount已经是int了,不用再转换了。尝试:

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

或者只使用小数。

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

看起来你的 CurrentCulture's NumberDecimalSeparator property is not . or/and since Convert.ToInt32 uses NumberStyles.Integer by default, you need 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();

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

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