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

本文关键字:字符串 输入 格式 不正确 两个 添加 | 更新日期: 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方法使用当前的区域性设置。

看起来您的CurrentCultureNumberDecimalSeparator属性不是.或/并且由于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吗?