不能从浮转化为int处理/ Java的

问题描述:

我这里有一些代码:不能从浮转化为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错误信息搜索会给你很多结果,解释发生了什么。 –

您需要更改返回类型为float以返回十进制值(如果这就是你所感兴趣的东西):

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

首先,记住intfloat是:

  • int只能保存不带小数点的整数,如1,42-54321
  • float可以容纳带小数点的数字,如0.25,1.9999-543.21

所以,你需要弄清楚你的意思,从你的函数返回:它应该是一个intfloat价值?如果它应该是float值,那么您可以简单地将函数的返回类型更改为float。如果您希望它返回值int,那么您将不得不重新考虑函数内部的逻辑,以便使用int值。

请注意,您可以使用int()函数从float转换为int。更多信息可在the reference找到。