int x=5*3;
int y=x+5/x+3
System.out.println(y);
9条回答 默认 最新
- 於黾 2021-12-29 16:21关注
5/x,5和x都是int型,整数除法没有小数,结果等于0
剩下15+3为什么是18不用讲吧
-==-=-
这里一个重要的知识点,必须记牢:
一个运算,或者说表达式,它的结果是跟参与运算的最大的类型匹配的
比如一个long+int,结果是long;double+int,结果是double
注意:运算是分步骤的,那么每个中间结果类型是根据它所在的步骤相关的。假如要计算一个double+int/int,那么除法优先级高,要先计算,两个int相除类型还是int,最终就会丢失精度。
-=-=-=
如果想让除法不丢失精度,那么两种办法
1.直接强制转换
比如int a=1,b=2;
要计算a/b,可以这样c=(double)a/b
2.利用上述规则,构造一个表达式,让结果自动转换类型:a*1.0/b,a先乘以1.0这个double型,结果就变成double类型了,再除以b就是double型除以int型,最终结果还是double型,不丢失精度本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 高价求中通快递查询接口
- ¥15 解决一个加好友限制问题 或者有好的方案
- ¥15 关于#java#的问题,请各位专家解答!
- ¥15 急matlab编程仿真二阶震荡系统
- ¥20 TEC-9的数据通路实验
- ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
- ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
- ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
- ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
- ¥15 如何实现H5在QQ平台上的二次分享卡片效果?