所以我有一个我正在研究的项目。这是我唯一的错误:
无法将类型'float'隐式转换为'int'。
我理解这意味着什么。我只需要帮助将我的浮点数转换为int。
这只是其中一个花车的一个例子:
float key = 0.5f;
int key = 53;
以下是具体的代码部分:
// price in scrap, e.g. 29 / 9 = 3.33 ref
static int BuyPricePerTOD = 21;
// price in scrap, e.g. 31 / 9 = 3.55 ref
static float SellPricePerTOD = BuyPricePerTOD + 0.5F;
static int BuyPricePerKey = 53;
static float SellPricePerKey = BuyPricePerKey + 0.5F;
static int TimerInterval = 170000;
static int InviteTimerInterval = 2000;
int UserWeapAdded,UserScrapAdded,UserRecAdded,UserRefAdded,
UserKeysAdded,UserTODAdded,BotTODsAdded,BotKeysAdded,
BotScrapAdded,BotRecAdded,BotRefAdded,InventoryMetal,
InventoryScrap,InventoryRec,InventoryRef,InventoryKeys,
InventoryTOD,PreviousTODs,PreviousKeys,WhileLoop,InvalidItem = 0;
float UserMetalAdded, BotMetalAdded, OverpayNumKeys,
OverpayNumTOD, ExcessInScrapKey, ExcessInScrapTOD = 0.0F;
double ExcessRefinedKey, ExcessRefinedTOD = 0.0;
答案 0 :(得分:13)
首先,有整数和浮点数字。整数总是整数,例如0
,1
,-32
,42
和1337
。另一方面,浮点数可以具有小数部分:0
,1
,-32.1
,42.7
和{{1}都是有效的浮点数。
在整数(123.456788
)和浮点(int
)数字之间进行转换时,您可以这样做:
float
但你不能这样做:
int someInt = 42;
float someFloat = someInt; // 42.0f
第一次转换的原因是,将整数(float someFloat = 42.7f;
int someInt = someFloat; // ?
)转换为浮点数(int
)会使不更改数字。这是一种安全的转换,因此可以隐式。
不允许第二次转换的原因是将浮点数(可能包含小数部分)转换为整数(从不具有小数部分)必须删除数字的小数部分,即它变成了一个不同的数字。这不安全,因此只能显式。
要将一种类型的数字显式转换为另一种数字,请使用强制转换。这是数字前面的括号,其中包含您要将其转换为的数字类型。
float
请注意,浮点数的小数部分已被删除。就好像它已向下舍入为零。如果要将浮点数舍入为最接近的整数,请使用Math.Round
method。
float someFloat = 42.7f;
int someInt = (int)someFloat; // 42
答案 1 :(得分:3)
试试这个:
int numInt = (int)Math.Ceiling(numFloat);
顺便说一下,您可能需要Math.Round()
或Math.Floor()
。
示例:
float numFloat = 1.5f;
int testCeiling = (int)Math.Ceiling(numFloat);
int testFloor = (int)Math.Floor(numFloat);
int testRound = (int)Math.Round(numFloat);
Console.WriteLine("testCeiling = {0}", testCeiling.ToString());
Console.WriteLine("testFloor = {0}", testFloor.ToString());
Console.WriteLine("testRound= {0}", testRound.ToString());
输出:
testCeiling = 2
testFloor = 1
testRound= 2