技术宅工作吧 关注:98贴子:1,583
问个与java有关的问题,不过其实也没有多大关系
如下几组程序(main方法、大括号略):
system.out.println(2/3)
结果:0
system.out.println(2/3F)
结果:0.6666667
system.out.println(0.2/3)
结果:0.0666667
system.out.println(0.2F/3)
结果:0.0666667
system.out.println(0.2/3F)
结果:0.06666666666666667
然后我就晕了


IP属地:英国1楼2015-07-24 14:44回复
    第一个,2和3都是int型数据,但结果是浮点数,系统强制按int处理,故小数点以后被砍掉,结果为0,你可以试一下3/2,结果应该为1。


    IP属地:北京来自Android客户端2楼2015-07-24 16:57
    回复
      第二个,你把3定义为单精度浮点数,故结果为单精度浮点数,


      IP属地:北京来自Android客户端3楼2015-07-24 16:58
      回复
        第三个,出现了0.2,数据类型默认为浮点数,故输出浮点数!


        IP属地:北京来自Android客户端4楼2015-07-24 16:59
        回复
          第四个,与第二个一样。由此可以得出,两个数运算,系统把结果的数据类型定为更高级的那个类型


          IP属地:北京来自Android客户端5楼2015-07-24 17:00
          回复
            第五个,两个单精度浮点数运算,最后输出双精度浮点数!


            IP属地:北京来自Android客户端6楼2015-07-24 17:01
            回复
              为了防止上述烧脑情况的发生,建议定义一个变量,设置好变量的数据类型,再输出变量


              IP属地:北京来自Android客户端7楼2015-07-24 17:02
              回复
                原来如此啊。。。


                IP属地:英国来自Android客户端8楼2015-07-24 22:58
                回复
                  那么再问几个问题:
                  1,有无方法使可恶的去尾法变为四舍五入?
                  2,有无方法使在输出语句中将整个结果变为Float型?抑或是只能重新定义一个变量?
                  3,转义字符中以回车为代表的圪liao(华为输入法无力)字符到底能否起到回车的作用?如果使用+,则会成为unicode码直接运算。


                  IP属地:英国来自Android客户端9楼2015-07-24 23:07
                  收起回复
                    怒看楼上俩学霸不啦不啦什么鬼


                    IP属地:浙江来自Android客户端10楼2015-07-25 08:12
                    收起回复
                      1.没方法,除非你定义高级一点的变量,但那样的话小数位数就变多了


                      IP属地:北京来自Android客户端11楼2015-07-25 09:27
                      回复
                        2.你前面的问题中2'3'4就是float型的!


                        IP属地:北京来自Android客户端12楼2015-07-25 09:28
                        回复
                          3.java回车我没学过,不就是“/n”吗


                          IP属地:北京来自Android客户端13楼2015-07-25 09:29
                          收起回复
                            回复:十三楼
                            例如
                            public class exercise
                            main方法(忘了){
                            int A = 3;
                            int B = 4;
                            char C = ‘/n’;
                            System.out.println(A+C+B);
                            }
                            这时C会当作整形变量直接运算。
                            那么如果我想将它改成A、B分行输出时,括号内要怎么写?


                            IP属地:英国来自Android客户端14楼2015-07-25 22:45
                            收起回复
                              为什么置顶?@祎语默然


                              IP属地:英国来自Android客户端15楼2015-07-25 23:25
                              收起回复