编译器错误消息:CS0029:无法隐式转换类型';int';到';字符串';

本文关键字:类型 int 字符串 转换 消息 错误 CS0029 编译器 | 更新日期: 2023-09-27 17:58:08

我需要将表数据库输入的String转换为C#中的整数值。NET 4,并尝试了此链接启发的代码:

    int i;
    string Entry_Level = Convert.ToInt32("2,45");
    i = Convert.ToInt32(Entry_Level); 

但我有一个错误:

编译器错误消息:CS0029:无法将类型"int"隐式转换为"string"

编辑

解决方法:

    decimal i;
    string Entry_Level = "2,45";
    i = Convert.ToDecimal(Entry_Level);
    Response.Write(i.ToString());
    Response.End();

在输出中,我有2,45,非常感谢!

编译器错误消息:CS0029:无法隐式转换类型';int';到';字符串';

string Entry_Level = Convert.ToInt32("2,45");

应该是

string Entry_Level = "2,45";

为什么不这么做呢:

int i = 2,45;

但由于这不是整数,您需要一种内置的十进制类型:

/* use this when precision matters a lot, for example when this is a unit price or a percentage value that will be multiplied with big numbers */
decimal i = 2.45 

/*  use this when precision isn't the most important part. 
It's still really precise, but you can get in trouble when dealing with really small or really big numbers. 
Doubles are fine in most cases.*/
double i = 2.45 

有关十进制与双精度的更多信息,请参阅此线程。

2,45不表示整数。这是一个真正的价值。所以我相信你实际上在寻找Convert.ToDoubleConvert.ToDecimal。或者可能是double.Parsedecimal.Parse

您可能还需要考虑在不使用,作为小数分隔符的机器上运行代码时会发生什么。考虑使用接受IFormatProvider的重载。

试试这个

string Entry_Level = Convert.ToInt32("2,45").toString()

您可以使用下面的代码行来删除编译错误,但它会通过,并且运行时异常导致2,45不是有效的整数。

string Entry_Level = Convert.ToInt32("2,45").ToString(); 

我建议你写下面的代码行,这将帮助你获得名为I 的变量的值2.45

decimal i;
string Entry_Level = "2,45";
Entry_Level = Entry_Level.Replace(',', '.');
i = Convert.ToDecimal(Entry_Level);