关于java的取整/和取余%

阿诺 2013-12-24 05:11:36
有点不明白!看下面代码:

int a = 10;
int b = 3;
double c= a / b;
System.out.println(c);

这里输出:3.0。按照正常理解10除以3,商3余1.而/取整 所以是3.0是对的!
但是我如下改动:

int a = 10;
int b = 3;
double c= (double)a / b;
System.out.println(c);

这里输出:3.3333333333333335
我的理解是:double c= (double)a / b;等价于double c= 10.0 / 3.0;
是否可以同时扩大10倍 那就是100/30 那还是商3余10! /取整应该还是3.0啊 为什么是3.333333....
(从这里是否可以看出我的确不大适合这个行业?!连小学生的问题都搞不清楚?)
是我晕了还是我小学没毕业!或者是哪里理解不够透彻!一直怀疑自己有点不适合搞这个!这一回更是大大的打击!高手求解啊!指点迷津啊!
...全文
52652 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wushen333 2013-12-28
  • 打赏
  • 举报
回复
(double)a优先级较高, double/int的话是要先都转成double再计算
独往丶 2013-12-27
  • 打赏
  • 举报
回复
int a = 10; int b = 3; double c= a / b;//c = (10/3) = (double)3 = 3.0 System.out.println(c); int a = 10; int b = 3; double c= (double)a / b;//c = (10.0/3) = 3.333333 System.out.println(c);
KieLeo 2013-12-27
  • 打赏
  • 举报
回复
引用 9 楼 solomon5926 的回复:
[quote=引用 楼主 anybyb 的回复:] (从这里是否可以看出我的确不大适合这个行业?!连小学生的问题都搞不清楚?) 是我晕了还是我小学没毕业!或者是哪里理解不够透彻!一直怀疑自己有点不适合搞这个!这一回更是大大的打击!高手求解啊!指点迷津啊!
这种问题很常见,差不多每个学语言的人都会遇到,这个和数学知识没啥关系,算法才和数学关系大,你这是只是一些机制不懂而已[/quote] +1
jerrybianjialei 2013-12-27
  • 打赏
  • 举报
回复
引用 6 楼 zyc13701469860 的回复:

        int a = 10;
        int b = 3;
        double c= a / b;//c = (10/3) = (double)3 = 3.0
        System.out.println(c);

        int a = 10;
        int b = 3;
        double c= (double)a / b;//c = (10.0/3) = 3.333333
        System.out.println(c);
正解
solomon5926 2013-12-26
  • 打赏
  • 举报
回复
引用 楼主 anybyb 的回复:
(从这里是否可以看出我的确不大适合这个行业?!连小学生的问题都搞不清楚?) 是我晕了还是我小学没毕业!或者是哪里理解不够透彻!一直怀疑自己有点不适合搞这个!这一回更是大大的打击!高手求解啊!指点迷津啊!
这种问题很常见,差不多每个学语言的人都会遇到,这个和数学知识没啥关系,算法才和数学关系大,你这是只是一些机制不懂而已
张自强 2013-12-25
  • 打赏
  • 举报
回复
引用 6 楼 zyc13701469860 的回复:

        int a = 10;
        int b = 3;
        double c= a / b;//c = (10/3) = (double)3 = 3.0
        System.out.println(c);

        int a = 10;
        int b = 3;
        double c= (double)a / b;//c = (10.0/3) = 3.333333
        System.out.println(c);
这个6楼的正解,这里就不多说了
姜小白- 2013-12-25
  • 打赏
  • 举报
回复
 double c= a / b; //将a/b的结果转double型
 double c= (double)a / b; //先将a转double型,再做运算
6楼的例子说明的很清楚了
Mourinho 2013-12-24
  • 打赏
  • 举报
回复

        int a = 10;
        int b = 3;
        double c= a / b;//c = (10/3) = (double)3 = 3.0
        System.out.println(c);

        int a = 10;
        int b = 3;
        double c= (double)a / b;//c = (10.0/3) = 3.333333
        System.out.println(c);
ymm0514 2013-12-24
  • 打赏
  • 举报
回复
是先执行括号中的内容再执行运算的
ymm0514 2013-12-24
  • 打赏
  • 举报
回复
int转换成double类型最后变成double,(double)a / b;意思是将a转换成double类型然后再与b进行相除,先后顺序是先知心括号中的再执行运算
羽翼苍穹 2013-12-24
  • 打赏
  • 举报
回复
引用 2 楼 Test_LD 的回复:
(double)a / b;的优先级是先把a转换为double类型
然后按照精度高的进行计算,所以结果是3.33333……
Test_LD 2013-12-24
  • 打赏
  • 举报
回复
(double)a / b;的优先级是先把a转换为double类型
oh_Maxy 2013-12-24
  • 打赏
  • 举报
回复
加减乘除计算,会先统一操作数的精度,其规则是先统一成精度高的数。 double型/int型、int型/double型,最后都转成double型/double型。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧