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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© koukou 中级黑马   /  2014-6-8 18:55  /  3936 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

若有定义:inta=7;float x=2.5,y=4.7;则表达式 x=a%3*(int)(x+y)%2/4的值是?
详细解答:
首先你说的精度是指精确度,并不是保留小数的位数,这两个概念不同,你可能弄混了,而输出的时候,double和float默认都是保留六位,我就再这里给你解释一下这两个题目吧。 首先看第一题,题目的运算顺序就是从左到右计算,a%3值为1,(int)(x+y)值为7,a%3*(int)(x+y)值为7,a%3*(int)(x+y)%2值为1,a%3*(int)(x+y)%2/4值要看他的赋值对象和输出格式了,要是整形就直接舍去小数,要是浮点型就保留小数。

10 个回复

倒序浏览
分析的不错。:lol
回复 使用道具 举报
赞一个,
回复 使用道具 举报
顶一个!
回复 使用道具 举报
:)不错,分析挺好的
回复 使用道具 举报
分析的太棒了  顶一个
回复 使用道具 举报
理解的很好,让我也茅塞顿开
回复 使用道具 举报
CoYim 初级黑马 2015-3-19 19:56:53
8#
基本上没有什么区别,都是表示小数
不过它们的宽度不一样,或者说精度不一样,float是单精度,double是双精度
它们表示小数的范围不一样,double能表示的范围,比float大
double在内存中,占8个字节,float占4个字节
默认情况以%f打印就是输出小数点后六位小数,%.2f表示输出两位小数

float和double的关系就像short跟long的关系一样
回复 使用道具 举报
貌似没有说出答案吧?
回复 使用道具 举报
分析的正确吗?
回复 使用道具 举报
多谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马