展开全部
问题就出在sqrt(4.0)上,这是个浮点数,结果是2.0。默认为double类型。
而double类型的存储方式是这样的,8字节,1个符号位,11个指数位,和52个精度位。
于是2.0的表示方法就是0(符号为正)000....01(指数为2^1)0000....0小数为0
如果你直接转换,而不用(int)转换的话,是直接截取末尾32位作为整数的,这样的话就都是0,所以在整数计算结果中就成了0。
如果你这样写:18/4*(int)sqrt(4.0)/8,结果就是你想要的了。
P.S.楼上说的不对,18/4==4
而double类型的存储方式是这样的,8字节,1个符号位,11个指数位,和52个精度位。
于是2.0的表示方法就是0(符号为正)000....01(指数为2^1)0000....0小数为0
如果你直接转换,而不用(int)转换的话,是直接截取末尾32位作为整数的,这样的话就都是0,所以在整数计算结果中就成了0。
如果你这样写:18/4*(int)sqrt(4.0)/8,结果就是你想要的了。
P.S.楼上说的不对,18/4==4
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询