我这里有一些代码:
int mutate(float x){
if (random(1) < .1){
float offset = randomGaussian()/2;
float newx = x + offset;
return newx;
} else {
return x;
}
}
此代码在返回值的两个示例上都给出错误,指出"类型不匹配:无法从浮点数转换为 int"。 我的代码有什么问题?
提前谢谢。
您需要将返回类型更改为 float 才能返回十进制值(如果您对此感兴趣(:
float mutate(float x){
if (random(1) < .1){
float offset = randomGaussian()/2;
float newx = x + offset;
return newx;
} else {
return x;
}
}
首先,记住int
和float
是什么:
int
只能保存没有小数位的整数,如1
、42
和-54321
。float
可以保存带有小数位的数字,如0.25
、1.9999
和-543.21
。
因此,您需要弄清楚要从函数返回的内容:它应该是一个int
值还是一个float
值?如果它应该是float
值,那么您只需将函数的返回类型更改为float
即可。如果您希望它返回int
值,则必须重新考虑函数内部的逻辑,以便它改用int
值。
请注意,您可以使用int()
函数从float
转换为int
。更多信息可以在参考中找到。