不好意思,还想问学长几个问题
登录 | 论坛导航 -> 华新鲜事 -> 社会百科 | 本帖共有 3 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者:tonymmm (等级:2 - 初出茅庐,发帖:212) 发表:2003-08-27 22:05:34  楼主  关注此帖
不好意思,还想问学长几个问题
1。what is i after the following for loop?
for (int i=0;i<10;++i){
y+=i;
}
为什莫答案是undefined?不应该是10吗?
2。analyze the following fragment:
double sum=0;
double d=0;
while(d!=10.0){
d+=0.1;
sum+=sum+d;
}
答案:the program may not stop because of the phenomenon referred t as numerical inaccuracy for uperating with floating-pointing numbers.
为啥?不懂~~~~
3。analyze the following code:
boolean even=false;
if(even=true){
system.out.println(" it is even!");
}
写得有错吗?结果是什莫?
4。even=number%2==0
有这种写法么? 是什莫意思呢?计算机看到这个expression后又是怎样工作的?
多谢学长的帮助!!
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:tonymmm (等级:2 - 初出茅庐,发帖:212) 发表:2003-08-27 22:27:38  2楼
here1. you can't assume y = 0. 2. it may not be exact 10.0, may be 9.9998 or 10.0001. 3. even=true!!? you need to put if((even=true)){...}. you try compile. see the warning. 4. don't know. you go have a try.
但是对第一题
问的是i的值不是y的值啊,跟y有没有initialized有关吗?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
作者:tonymmm (等级:2 - 初出茅庐,发帖:212) 发表:2003-08-28 00:45:30  3楼
for 2, more details heresorry for my careless mistake you are actually using double here which is 64 bits in java, but the argument is the same. you can use the following program to find out what exactly happens: class T { public static void main (String args[]) { double d = 0; for(; d < 10.1; d += 0.1){ if(d > 9.8){ System.out.print(Long.toBinaryString(Double.doubleToLongBits(d))+" == >"+d+"\n"); } } System.out.print("\n\n"+Long.toBinaryString(Double.doubleToLongBits(10))+" == >10\n"); } } The output is like: 100000000100011110011001100110011001100110011001100110011000010 == >9.89999999999998 100000000100011111111111111111111111111111111111111111111110101 == >9.99999999999998 100000000100100001100110011001100110011001100110011001100101000 == >10.09999999999998 100000000100100000000000000000000000000000000000000000000000000 == >10 so ......
唔,第1,3,4题俺都懂了。谢谢学长....
第2题嘛,不好意思,没明白。可能俺还没学到那的缘故。是不是这个意思:计算机对于double 的数在represent时不会很精确,所以永远不会正好出现10.0, 因此就成了一个infinite loop?
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版所有回复从这里展开收起列表
论坛导航 -> 华新鲜事 -> 社会百科 | 返回上一页 | 本主题共有 3 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码