2017-07-28 61 views
0

我這裏有一些代碼:不能從浮轉化爲int處理/ Java的

int mutate(float x){ 
    if (random(1) < .1){ 
    float offset = randomGaussian()/2; 
    float newx = x + offset; 
    return newx; 
} else { 
    return x; 
} 
} 

該代碼給出了返回值說:「類型不匹配的兩個樣本的錯誤:無法從float轉換爲int 「。我的代碼有什麼問題?

在此先感謝。

+0

你應該養成研究你的問題的習慣。使用Google錯誤信息搜索會給你很多結果,解釋發生了什麼。 –

回答

3

您需要更改返回類型爲float以返回十進制值(如果這就是你所感興趣的東西):

float mutate(float x){ 
    if (random(1) < .1){ 
     float offset = randomGaussian()/2; 
     float newx = x + offset; 
     return newx; 
    } else { 
     return x; 
    } 
} 
3

首先,記住intfloat是:

  • int只能保存不帶小數點的整數,如1,42-54321
  • float可以容納帶小數點的數字,如0.25,1.9999-543.21

所以,你需要弄清楚你的意思,從你的函數返回:它應該是一個intfloat價值?如果它應該是float值,那麼您可以簡單地將函數的返回類型更改爲float。如果您希望它返回值int,那麼您將不得不重新考慮函數內部的邏輯,以便使用int值。

請注意,您可以使用int()函數從float轉換爲int。更多信息可在the reference找到。