添加两个值 - 输入字符串的格式不正确
本文关键字:字符串 输入 格式 不正确 两个 添加 | 更新日期: 2023-09-27 18:37:25
我从数据读取器读取数据,并希望为其添加一些价值。它给了我错误
输入字符串格式不正确
这是我的代码
int OldAmount = 0;
while (dr.Read())
{
OldAmount = dr.GetInt32(0);
}
string CurrentAmount = (Convert.ToInt32(amnt) + Convert.ToInt32(OldAmount)).ToString();
amnt
string
并具有23000
价值的地方。
有什么问题吗?
Convert.ToInt32
方法使用当前的区域性设置。
看起来您的CurrentCulture
的NumberDecimalSeparator
属性不是.
或/并且由于Convert.ToInt32
默认使用NumberStyles.Integer
,因此您还需要NumberStyles.AllowDecimalPoint
指向小数分隔符。
您可以使用Int32.Parse(String, NumberStyles, IFormatProvider)
重载来提供类似;
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
您正在转换为 int,而您使用的是十进制。将convert.ToInt32(amnt)
更改为convert.ToDecimal(amnt)
OldAmount
已经是一个整数,你不需要再次转换它。 尝试:
string CurrentAmount = (int.Parse("23000.00", NumberStyles.AllowDecimalPoint) + OldAmount).ToString();
或者只是使用小数。
Convert.ToInt
取决于您的计算机CurrentCulture
。
如果您的小数分隔符不是该.
,则可以获得该异常。
您可以将 Int.Parse 与字符串格式的规范一起使用,例如 Int32.Parse("23000.00", NumberStyles.AllowDecimalPoint);
.
但是你确定它应该是int
而不是decimal
吗?