Int number = (int)Math.random();



关于符号的简单问题。

出于什么原因,我必须在等号后面的括号中写"int",否则编译会失败?

int number = (int)Math.random();

为什么编译器不将第二个"int"识别为同一行中的第一个?

这取决于你的语言,但Math.random()可能会返回浮点类型,并且你正在使用不执行隐式类型转换的语言。该语言说"您正在尝试为声明为int的变量分配一个float值,这是一个可能的错误,因为将int转换为浮点数会丢失信息!

通过使用(int),您正在执行类型转换,该强制转换指示编译器从 Math.random(( 获取浮点结果,但将其解释为 int。

Math.random()的结果具有双精度类型。因此,您必须将双精度类型缩小到 int。 之后,您的程序将正常工作,但数字值将始终为 0,因为 Math.random 值大于 0,但小于 1。

最新更新