所以,我的任务中有一个问题。这是“添加分数(1/10)+(2/9)+(3/8)+(4/7)+(5/6)+(6/5)+(7/4)+(8/3 )+(9/2)+(10/1)在一起,输出应为4个小数点“。我写了一个循环使用1和10值随着我的增加和减少。它似乎没有提出正确的答案。它应该是22.218650 ...等因为我还没有限制小数位,但它没有给出正确的答案。我得到的输出是18.0。
public class AddThemUp {
// instance variables - replace the example below with your own
public static void main(String [] args) {
int i;
int numer = 1;
int denom = 10;
double addUp = 0.0;
for (i = 1; i <= 10; i++) {
addUp = (numer / denom) + addUp;
numer++;
denom--;
}
System.out.println(addUp);
}
}
在尝试找出小数位分隔符之前,addUp println只是为了看数学是否正常工作。我是不正确地使用双倍还是数字和面额也应该加倍?任何帮助将不胜感激。
答案 0 :(得分:1)
你正在进行int division,总是返回一个int - 而不是你想要的结果。您需要执行双重划分才能使用此功能。将分数的分子或分母转换为加倍:
((double) numerator / denominator)
答案 1 :(得分:1)
将您的分部(numer/denom
)转换为int
,以便结果中的所有小数值都丢失。将其中一个值转换为十进制,例如您计算中的double
例如下面:
addUp = ((double)numer / denom) + addUp;
您将获得预期的结果。