public class Test {
public static void main(String[] args){
int i;
i=10/3;
System.out.println(i);
float i1;
i1=10/3;
System.out.println(i1);
double i2;
i2=10/3;
System.out.println(i2);
long i3;
i3=55656*68125;
System.out.println(i3);
}
}
如上述得到的结果是
3
3.0
3.0
-503402296
1:要怎么得到3.33333333这样的数。
2:为什么i3没有报错,这个应该是溢出了
JAVA关于数据类型算术运算符的一个问题
答案:5 悬赏:50 手机版
解决时间 2021-04-09 03:22
- 提问者网友:火车头
- 2021-04-08 05:51
最佳答案
- 五星知识达人网友:从此江山别
- 2021-04-08 07:21
1
public class Test {
public static void main(String[] args){
int i;
i=10/3;
System.out.println(i);
float i1;
i1=(float)10/3;
System.out.println(i1);
double i2;
i2=(double)10/3;
System.out.println(i2);
long i3;
i3=55656*68125;
System.out.println(i3);
}
}
加个强制类型转换
2
试试
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
溢出还早呢
public class Test {
public static void main(String[] args){
int i;
i=10/3;
System.out.println(i);
float i1;
i1=(float)10/3;
System.out.println(i1);
double i2;
i2=(double)10/3;
System.out.println(i2);
long i3;
i3=55656*68125;
System.out.println(i3);
}
}
加个强制类型转换
2
试试
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
溢出还早呢
全部回答
- 1楼网友:过活
- 2021-04-08 10:36
1. 将i1 = 10/3 改为 10/3.0 就可以了. 他是有类型转换的.两个整形(10和3)相除只能获得整数也就是3,再将3转化为float,所以是3.0.
2. 数字溢出不会报错.
- 2楼网友:低音帝王
- 2021-04-08 09:54
1. float f=10/3.0;
2. long在溢出之后只保留低64bit的数据,高位被抛弃,所以得那个数。
- 3楼网友:洒脱疯子
- 2021-04-08 09:28
1:int类型的输出是整数,不会得到3.333333这样的数,你可以使用 BigDecimal bd = new BigDecimal(10);
bd = bd.divide(new BigDecimal(3),10,BigDecimal.ROUND_HALF_UP);
System.out.println(bd);因为是除不尽的,我只保留的10位小数
2:溢出是不会报错的,只是计算结果会出错哦
- 4楼网友:轻熟杀无赦
- 2021-04-08 07:49
1. float f=10/3.0;
2. long在溢出之后只保留低64bit的数据,高位被抛弃,所以得那个数。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯