2014-02-20 268 views
-4

因此,我有一個項目正在進行中。這是我唯一的錯誤:將Float轉換爲Int

不能將類型'float'隱式轉換爲'int'。

我的理解在某種程度上意味着什麼。我只需要幫助將我的float轉換爲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; 
+1

你可以展示一些你迄今爲止所做的代碼嗎? – Edper

+2

@ user3325320 .. int _value = Convert.ToInt32(key); –

+0

你想轉一圈嗎?或者你只是想截斷?例如'1.8'四捨五入爲'2',但截斷爲'1'。 –

回答

1

試試這個:

int numInt = (int)Math.Ceiling(numFloat); 

msdn documentation

順便提一下,您可能需要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 
3

首先,有整數浮點號碼。整數是總是整數,如0,1,-32,421337。另一方面,浮點數可以有有小數部分:0,1,-32.1,42.7123.456788都是有效的浮點數。

當整數(int)和浮點(float)數之間的轉換,你可以這樣做:

int someInt = 42; 
float someFloat = someInt; // 42.0f 

但你不能做到這一點:

float someFloat = 42.7f; 
int someInt = someFloat; // ? 

的原因第一次轉換是可能的,那就是將整數(int)轉換爲浮點數(float不是更改數字。這是一個安全的轉換,因此可以隱式執行

不允許進行第二次轉換的原因是將浮點數(可能有小數部分)轉換爲整數(從未有小數部分)必須刪除小數部分,即它變成了不同的數字。這是不安全的,因此只能做明確


一種類型的數顯式轉換爲另一種,您使用。這是您要將其轉換爲數字類型的數字之前的括號。

float someFloat = 42.7f; 
int someInt = (int)someFloat;    // 42 

請注意,浮點數的小數部分被丟棄。就好像它已經被調低到零。如果要將浮點數整數到最接近的整數,請使用Math.Round method

float someFloat = 42.7f; 
int someInt = (int)Math.Round(someFloat); // 43