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这一串数字是什么意思,为什么会产生这样的结果?
展开
 我来答
爱我所爱丶Lyb
2015-08-04 · TA获得超过408个赞
知道小有建树答主
回答量:390
采纳率:0%
帮助的人:302万
展开全部
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。
追问
嗯。。还是不太明白最后那串47683716是怎么出来的,可以具体说明一下吗
追答
http://blog.csdn.net/abing37/article/details/5332798

这种文章已经很多了。百度搜索 Java 浮点数精度 一大堆
我说的没人家专业
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式