如何修复"不兼容的类型:可能有损转换从double到int"错误

时间:2016-08-27 19:58:59

标签: java

我认为应该有所作为,但Java并不喜欢它。

我收到此错误:

project5.java:10: error: incompatible types: possible lossy conversion from double to int

int Low = Math.sqrt(count);
                   ^1 error

这是我的代码:

import java.util.*
public class project5
{
   public static void main (String args[])
   {
      int count = 1;
      while (count < 11) {
          Random r = new Random();
          int Low = Math.sqrt(count);
          int High = count;
          int Result = r.nextInt(High-Low) + Low;
          System.out.println( count + "\t" + Math.sqrt(count));
          count++;
       }
   }
}

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

您可以将结果转换为int

int Low = (int) Math.sqrt(count);

如果从结果中取得成功,你可以正常工作。如果你想要它四舍五入,那么做

(int) Math.round(Math.sqrt(count));

在这种特定情况下,int可以安全地投放到count,因为intsqrt,而int始终适合<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/colorPrimary" /> <item> <bitmap android:src="@drawable/bebe" android:gravity="center" android:alpha="0.1" /> </item> <item android:top="260dp" android:bottom="-100dp" android:left="0dp" android:right="-260dp"> <rotate android:fromDegrees="-10" android:pivotX="0%" android:pivotY="100%"> <shape android:shape="rectangle"> <solid android:color="@android:color/white"/> </shape> </rotate> </item> </layer-list> 范围。

答案 1 :(得分:0)

将sqrt转换为int,你将丢失小数部分......

 int Low = (int) Math.sqrt(count);

答案 2 :(得分:0)

此错误表示您尝试将double分配给int

Math.sqrt方法返回双精度:https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#sqrt(double)

如果要将此值分配给整数,可以简单地将其转换为整数:

int Low = (int)Math.sqrt(count);

注意:如果sqrt方法的结果不是整数,则将结果转换为整数会将结果的整个部分分配给整数:

System.out.println(String.valueOf((int)Math.sqrt(5))); // Prints 2