我得到错误:可能会失去精确度,我试图改变它,但我可以解决它,请帮助我

时间:2013-10-13 22:55:30

标签: java variables

我只是把变量和我得到错误的案例

    Scanner DatoEntrada = new Scanner (System.in);
float AFC, PFC, RC;

case 3:
System.out.println("Ingrese el radio");
RC=DatoEntrada.nextInt();
AFC=3.1416*(RC*RC);
PFC=3.1416*(RC*2);
break;

错误说:

AFC=3.1416*(RC*RC);
          ^
required: float
found:   double   

并且在变量PFC中,我已经尝试将变量RC的值的输入更改为nextFloat和double但它不起作用,也将变量的类型更改为double但是当我编译它时,它说te变量未在System.out.print

中启动

1 个答案:

答案 0 :(得分:4)

3.1416是一个double字面值 将其乘以float仍然会返回一个double,因此整个表达式的结果为double

您无法将double分配给float变量(因为double可以容纳超过float)。

相反,您需要将变量更改为double s,以便它们可以保存更高精度的结果。或者,您可以将文字更改为float字面值(通过将f附加到数字上),以便整个事物保持较低精度float