2015-07-13 111 views
-2

编译代码时出现此错误 “可能丢失精度” 我在做什么错误!运行非常简单的java代码时出现此错误

import javax.swing.*; 
import java.lang.*; 

public class Assignment2 
{ 
    public static void main (String [] args) 
    { 
     int number=Double.parseDouble(JOptionPane.showInputDialog("Enter a number")); 
     System.out.println(Math.sqrt(number)); 
    } 
} 
+0

您正在分配double值的整数变量。它抱怨在这个过程中,双重价值的“小数部分”可能会丢失。 – Gosu

+0

Java是一种强类型语言。你必须明确你的转换。 –

+0

^都正确,你应该使用双精度的局部变量而不是整数。无论如何,sqrt函数都有一个double参数,不需要转换为整数。 – alan7678

回答

0

你可以声明numberdouble像那些答案,但如果你真的想number是一个int然后将返回值:

int number = (int) Double.parseDouble(...); 
2

您分配一个双重价值为int值,就是这个原因(因为双能存储较大的值,并有小数部分就可能导致丢失数据的)......我认为你需要分配

int number = Double.parseDouble(JOptionPane.showInputDialog("Enter a number")); 

你应该为了防止丢失换号的类型double:由Double.parseDouble()返回到双可变

import javax.swing.*; 
import java.lang.*; 

public class Assignment2 

{ 

    public static void main(String[] args) 

    { 

     double number = Double.parseDouble(JOptionPane 
       .showInputDialog("Enter a number")); 
     System.out.println(Math.sqrt(number)); 

    } 

} 
相关问题