用java做算法时中间写了
public double calculate( int[] p, int num)
{
double [][] a = new double[num][num+1];
a[0][1]=p[0]/100;
a[0][0]=1-p[0]/100;
......................
}
这段,但是System.out.println(a[0][1])和System.out.println(a[0][0])时都输出了0.0,值没有赋进去。
但是写成
public double calculate( int[] p, int num)
{
double [][] a = new double[num][num+1];
a[0][1]=p[0];
a[0][0]=100-p[0];
a[0][1]=a[0][1]/100;
a[0][0]=a[0][0]/100;
......................
}
时就成功赋值进去了,请问这是为什么呀?
第一个函数, 你右边的都是int类型啊, 计算出来的值都是 int, 那就是0啊
更改
a[0][1]=p[0]/100.00;
a[0][0]=1-p[0]/100.00;
100改成 100.00 之后就是 double 类型,, int/double 会向上转型成 double/double。。从而获得一个 double
请采纳
10:12编辑
很不爽, 回答被人说是抄袭。。说三点
1. 没有给出任何提示, 没有跟我沟通就删除答案
2. 删除之前请调一下后台记录, 我进入该答案进行回答的时候还没有任何的答案!!
3. 我使用编译器验证了一遍, 导致出答案的时间有点久。回答完之后发现了上面的答案(我记得是晚了4分钟)。。我发现答案相似度很高, 所以我又编辑了一遍, 以遍更加详细。
不明白为什么这样子, 也没法@管理员。。但是被人以这样的形式说抄袭和投了反对票还是非常不爽的!
我投诉之后, 给我又把答案恢复了:时间 09:51(不是我自己改的)
a[0][1]=p[0]/100;
这是整除,你应该是
a[0][1]=p[0]/(double)100;