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.BaseRate
从string
变成了int
。所以用hotel.BaseRate
除以daysDuration
得到每晚的价格是有意义的,因为它们现在都是整数。请告知我做错了什么,因为我在foreach循环中的最后一行代码给了我错误信息:
不能隐式地将int类型转换为string。
您在前面一行中将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;
}
convertInt
是string
,你试图保存int
的值形式nightRate / daysDuration
。你需要使用(nightRate / daysDuration).ToString()
所以你的行:
convertInt = nightRate / daysDuration;
应:convertInt = (nightRate / daysDuration).ToString();
你的错误是混淆了类型。程序需要一个有int类型的字符串,因此必须在int类型上调用. tostring()。更好的方法是重构代码,以便在调用计算之前用适当的类型定义所需的所有变量。顺便说一下,货币的推荐类型是Decimal。int的问题是不能表示它的十进制单位,比如分,而且使用double会出现舍入问题。