错误:类型不兼容:可能从双精度转换为浮点型

问题描述

我一直在运行此代码,并不断收到错误,不确定原因。加倍浮动? 继续收到消息“错误:类型不兼容:可能从double转换为float的有损转换。”转换是否有任何问题,如何转换,所以没有错误 这是较大代码的一部分。

  public static float getAreaOfPentagon(float l) {
  float area = Math.sqrt(5 * (5 + 2 * (Math.sqrt(5))) * l * l) / 4;
  return area;
}

解决方法

您需要投射。或将area声明为double

float area = (float)(Math.sqrt(5 * (5 + 2 *
   (Math.sqrt(5))) * l * l) / 4);

double area = Math.sqrt(5 * (5 + 2 *
   (Math.sqrt(5))) * l * l) / 4;

此外:您正在将整数和浮点数混合在同一方程式中。通常这会导致灾难。最好使用双字面量。

double area = Math.sqrt(5.0 * (5.0 + 2.0 *
   (Math.sqrt(5.0))) * l * l) / 4.0;