java数值类型精度问题,求救高手,高手请进,瞎说的走开!
publicclassTestMth{publicstaticvoidmain(String[]args){inti=7/3;floatf=7/3;doubled=7/3...
public class TestMth {
public static void main(String[]args){
int i=7/3;
float f=7/3;
double d=7/3;
System.out.println(i);
System.out.println(f);
System.out.println(d);
}
}
//为啥运行结果是:
2
2.0
2.0
为啥不是
2
2.33333333333333333333333333333333……
2.33333333333333333333333333333333……
要想得到这样的结果怎么办? 展开
public static void main(String[]args){
int i=7/3;
float f=7/3;
double d=7/3;
System.out.println(i);
System.out.println(f);
System.out.println(d);
}
}
//为啥运行结果是:
2
2.0
2.0
为啥不是
2
2.33333333333333333333333333333333……
2.33333333333333333333333333333333……
要想得到这样的结果怎么办? 展开
展开全部
java中..直接书写整数..那么他的类型是int..
直接书写小数他的类型是double..
java中..运算式结果的类型..是该运算式中..类型范围最大的..
比如..int + long结果就是long类型..因为long类型范围比int大..这样结果才不会损失精度..
你题目中..
7是int..3也是int..
所以7/3也是int..并且值是2..因为7/3等于2点几..转成int就把小数切掉..所以是2..
所以
int i=7/3;//相当于是把2赋值给一个int类型的变量i
float f=7/3;//相当于是把2转换成float变成2.0赋值给一个float类型的变量f
double d=7/3;//相当于是把2转换成double变成2.0赋值给一个double类型的变量d
明白了么..
所以要想达到你要的效果..
float f=7/3;
double d=7/3;
这两个里面就需要把7或者3转成float或者double再计算机..这样计算结果就是float或者double..就不会切掉小数了..
即改成
float f=7/3f;//java中float数据就是在数字后面加个f或者F表示这个数是float类型
double d=7/3.0;//直接加个.0就是double了..也可以(double)7/3..就是把7转成double再计算..
希望能帮到你..
直接书写小数他的类型是double..
java中..运算式结果的类型..是该运算式中..类型范围最大的..
比如..int + long结果就是long类型..因为long类型范围比int大..这样结果才不会损失精度..
你题目中..
7是int..3也是int..
所以7/3也是int..并且值是2..因为7/3等于2点几..转成int就把小数切掉..所以是2..
所以
int i=7/3;//相当于是把2赋值给一个int类型的变量i
float f=7/3;//相当于是把2转换成float变成2.0赋值给一个float类型的变量f
double d=7/3;//相当于是把2转换成double变成2.0赋值给一个double类型的变量d
明白了么..
所以要想达到你要的效果..
float f=7/3;
double d=7/3;
这两个里面就需要把7或者3转成float或者double再计算机..这样计算结果就是float或者double..就不会切掉小数了..
即改成
float f=7/3f;//java中float数据就是在数字后面加个f或者F表示这个数是float类型
double d=7/3.0;//直接加个.0就是double了..也可以(double)7/3..就是把7转成double再计算..
希望能帮到你..
展开全部
7和3都是int,7/3也是默认int,你在赋值给double和float的d,结果自然是2.0
你想要得到那样的结果必须让7/3是float或double
如 double d=(double)7/3
你想要得到那样的结果必须让7/3是float或double
如 double d=(double)7/3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
f = 7.0f/3.0f;
d = 7.0/3.0;
因为3/7首先是3/7是int之间的计算算出来int值以后再转化为float或double
d = 7.0/3.0;
因为3/7首先是3/7是int之间的计算算出来int值以后再转化为float或double
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据类型问题
public class TestMth {
public static void main(String[]args){
int i=7/3;
float f=7.0f/3;
double d=7.0/3;
System.out.println(i);
System.out.println(f);
System.out.println(d);
}
}
在java里,6.0算double类型,所以float要强转类型
public class TestMth {
public static void main(String[]args){
int i=7/3;
float f=7.0f/3;
double d=7.0/3;
System.out.println(i);
System.out.println(f);
System.out.println(d);
}
}
在java里,6.0算double类型,所以float要强转类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为 7 / 3是整形 所以 除出来时整形
你要把 7 和3 转换为double 再除就是浮点的了
你要把 7 和3 转换为double 再除就是浮点的了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询