Java语言 从键盘输入3个数字,一个int类型数据、一个double类型、一个float类型数据,将其3个数字,求和
importjava.util.Scanner;publicclassNo4{publicstaticvoidmain(String[]args){System.out....
import java.util.Scanner;
public class No4{
public static void main(String[] args){
System.out.print("请输入一个int类型数据:");
Scanner num1=new Scanner(System.in);
int number1=num1.nextInt();
System.out.print("请输入一个double类型数据:");
Scanner num2=new Scanner(System.in);
double number2=num2.nextDouble();
System.out.print("请输入一个float类型数据:");
Scanner num3=new Scanner(System.in);
float number3=num3.nextFloat();
System.out.println("和="+(number1+number2+number3));
}
}
我不太明白后面47683716这一串数字是什么意思,为什么会产生这样的结果? 展开
public class No4{
public static void main(String[] args){
System.out.print("请输入一个int类型数据:");
Scanner num1=new Scanner(System.in);
int number1=num1.nextInt();
System.out.print("请输入一个double类型数据:");
Scanner num2=new Scanner(System.in);
double number2=num2.nextDouble();
System.out.print("请输入一个float类型数据:");
Scanner num3=new Scanner(System.in);
float number3=num3.nextFloat();
System.out.println("和="+(number1+number2+number3));
}
}
我不太明白后面47683716这一串数字是什么意思,为什么会产生这样的结果? 展开
展开全部
float,double是浮点数,
Java中,浮点类型是依据IEEE754标准的。IEEE754定义了32位和64位双精度两种浮点二进制小数标准。采用二进制表示double,float等浮点数是不准确的。
java浮点数时是有精度限制的,这跟计算机内部的表示有关,任意一个浮点数都要变成
尾码*2^阶码,且1<=尾码<2,如
1.45*2^5,1.45存储时只存小数点后面的数,0.45最后也变成2^b0+2^b1+2^bn,尾码存储时每一位就是
b0,b1,...bn,0.4无法精确表示的。
如果想使用无精度限制,那就只能使用BigDecimal。
Java中,浮点类型是依据IEEE754标准的。IEEE754定义了32位和64位双精度两种浮点二进制小数标准。采用二进制表示double,float等浮点数是不准确的。
java浮点数时是有精度限制的,这跟计算机内部的表示有关,任意一个浮点数都要变成
尾码*2^阶码,且1<=尾码<2,如
1.45*2^5,1.45存储时只存小数点后面的数,0.45最后也变成2^b0+2^b1+2^bn,尾码存储时每一位就是
b0,b1,...bn,0.4无法精确表示的。
如果想使用无精度限制,那就只能使用BigDecimal。
追问
嗯。。还是不太明白最后那串47683716是怎么出来的,可以具体说明一下吗
追答
http://blog.csdn.net/abing37/article/details/5332798
这种文章已经很多了。百度搜索 Java 浮点数精度 一大堆
我说的没人家专业
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询