添加两个值 - 输入字符串的格式不正确
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();
其中 amnt
是 string
并且具有 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
我从数据 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();
其中 amnt
是 string
并且具有 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