c#类型转换(字符串到整型)

本文关键字:整型 字符串 类型转换 | 更新日期: 2023-09-27 18:14:07

我目前正在迭代项目(酒店)列表,如果内容编辑器输入超过1晚的价格,我需要找出每晚的价格。

if (!string.IsNullOrEmpty(resource))
{
    var results = JsonConvert.DeserializeObject(resource).ToString();
    if (!string.IsNullOrEmpty(results))
    {
        var hotels = JsonConvert.DeserializeObject<ContainerHotelViewModel>(results).Hotels;
        if (daysDuration > 1)
        {
            foreach (var hotel in hotels)
            {
                string convertInt = hotel.BaseRate;
                int nightRate;
                int.TryParse(hotel.BaseRate, out nightRate);
                convertInt = nightRate / daysDuration;                    
            }
        }
        return SortHotels(hotelIds, hotels);
    }
}

所以我的理解是我已经把hotel.BaseRatestring变成了int。所以用hotel.BaseRate除以daysDuration得到每晚的价格是有意义的,因为它们现在都是整数。请告知我做错了什么,因为我在foreach循环中的最后一行代码给了我错误信息:

不能隐式地将int类型转换为string。

c#类型转换(字符串到整型)

您在前面一行中将convertInt定义为string:

string convertInt = hotel.BaseRate;
string convertInt = hotel.BaseRate;
int nightRate;
int.TryParse(hotel.BaseRate, out nightRate);
convertInt = nightRate / daysDuration;

首先将convertInt声明为字符串,然后尝试将其设置为响应您的方程。

删除第一行并将最后一行设置为this:

int convertInt = nightRate / daysDuration;

不能将整型转换为字符串(convertInt在本例中就是字符串)。

但是,你可以这样做:

convertInt = (nightRate / daysDuration).ToString();

另外,作为旁注:如果你和钱打交道,你不应该使用Int型,就像你用3个晚上除以15英镑,答案将是5.33英镑——但是Int型不能包含小数点。

请更改您的代码。

Old code :  convertInt = nightRate / daysDuration;  
New code :  convertInt = (nightRate / daysDuration).ToString();  

请用新代码行更新旧代码行。

谢谢。

你的问题在这里:

foreach (var hotel in hotels)
{
    string convertInt = hotel.BaseRate;
    int nightRate;
    int.TryParse(hotel.BaseRate, out nightRate);
    convertInt = nightRate / daysDuration;  
}

convertIntstring,你试图保存int的值形式nightRate / daysDuration。你需要使用(nightRate / daysDuration).ToString()

所以你的行:

convertInt = nightRate / daysDuration;
应:

convertInt = (nightRate / daysDuration).ToString();

你的错误是混淆了类型。程序需要一个有int类型的字符串,因此必须在int类型上调用. tostring()。更好的方法是重构代码,以便在调用计算之前用适当的类型定义所需的所有变量。顺便说一下,货币的推荐类型是Decimal。int的问题是不能表示它的十进制单位,比如分,而且使用double会出现舍入问题。