A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 374122761 黑马帝   /  2011-12-22 10:10  /  3299 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 374122761 于 2012-1-3 12:55 编辑

直接写一个  3.0/2.0  然后输出。结果等于1.5   它内部是用取前者一半的算法来算、还是别的什么算法吗?

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

13 个回复

倒序浏览
我是这么理解的,不知道对不对,3/2=1%1,因为3和2分别是浮点型,小数点后面还有个0继续除%出来的1,也就是0.5,那么结果就是1.5。不知道对不对,请高手解答一下吧

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
底层就施行了除法运算!!!
回复 使用道具 举报
3.0和2.0都是double型的。所以输出也是double型。如果3/2那么它算出来的结果就是整型的。如果3和2中任何一个为double型的,那么他算出来的结果必然是1.5,这就是自动类型提升。

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1

查看全部评分

回复 使用道具 举报
对对,楼上正解,想起来了,两个参数都是double类型的,那么结果也一定是double类型,如果楼主想要把结果输出整数“1”,需要强制类型转换就哦了
回复 使用道具 举报
先向高的提升,再计算.计算结果为高类型
回复 使用道具 举报
张振宁 黑马帝 2011-12-22 16:13:34
7#
double 除法得的值一定是double 的。
回复 使用道具 举报
这个是类型自动转换,如果在一个运算中出现了数值的类型级别的高低,计算机运算的时候会自动将低级别的数值转成高类型的数值后再计算,这是计算机自己计算时的算法。3.0/2.0,3/2,这些在计算机计算的时候都按double类型计算。如果想要的结果是低类型的时候,我们才需要进行强制类型转换,把高级别类型的数值再转成我们需要的低级别的类型使用。
回复 使用道具 举报
代臣 黑马帝 2011-12-23 15:26:36
9#
由于3.0和2.0是浮点型的,所以它们可以表示为二进制形式,如果3.0是float类型(4个字节):
则3.0的二进制形式为:00000000 00000000 00000000 0000011.0(“.”表示小数点,电脑中小数点数字的二进制表示形式)
3.0/2.0的意思可以用位移运算符来理解,即将3.0的二进制位右移2.0:
3.0>> 2.0
得到00000000 00000000 00000000 000001.10
由二进制转化为十进制就是1+1*2^(-1)=1.5
回复 使用道具 举报
房宝彬 发表于 2011-12-22 10:14
我是这么理解的,不知道对不对,3/2=1%1,因为3和2分别是浮点型,小数点后面还有个0继续除%出来的1,也就是 ...

:lol谢了
回复 使用道具 举报
六期刘健 发表于 2011-12-22 10:20
底层就施行了除法运算!!!

:lol谢了
回复 使用道具 举报
房宝彬 发表于 2011-12-22 10:26
对对,楼上正解,想起来了,两个参数都是double类型的,那么结果也一定是double类型,如果楼主想要把结果输 ...

其实我是以为他内部有别的算法在计算的、这么看来只是因为类型的不同才出这样的结果的
回复 使用道具 举报
为梦而战 发表于 2011-12-22 16:31
这个是类型自动转换,如果在一个运算中出现了数值的类型级别的高低,计算机运算的时候会自动将低级别的数值 ...

:handshake有道理
回复 使用道具 举报
374122761 发表于 2012-1-3 12:40
有道理

:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马