-1

我正在尝试运行一个循环 1 + 1/3 + 1/5 - 1/7 + 1/9 ....等等

但它一直显示为 1!

我试过了

double answer = 1 + 1/3 + 1/5 - 1/7 + 1/9 - 1/11;
displays 1

数学很奇怪,就像我什至搞砸并尝试过

double answer = 1 / 5; //should display 0.2
displays 0!!!!!!!!
4

5 回答 5

7

您正在使用整数数学。

两个整数之间的运算结果将是一个整数,向 0 舍入。

所以你的代码变成:

double answer = 1 + 0 + 0 - 0 + 0 - 0;

试试这个。

double answer = 1.0 + 1.0/3.0 + 1.0/5.0 - 1.0/7.0 + 1.0/9.0 - 1.0/11.0;
于 2013-03-07T17:50:25.347 回答
3

因为您使用的是整数文字。试试这个:

double answer = 1 + 1/3.0 + 1/5.0 - 1/7.0 + 1/9.0 - 1/11.0;
于 2013-03-07T17:50:54.830 回答
2

在 C++ 中,当您将一个整数除以另一个时,您会得到一个整数。因此,1/3等于0

尝试:

double answer = 1 + 1/3.0 + 1/5.0 - 1/7.0 + 1/9.0 - 1/11.0;
于 2013-03-07T17:50:31.467 回答
2

该操作对整数常量起作用,然后将结果转换为双精度。您应该如下定义常量:

double answer = 1.0 + 1.0/3.0 + 1.0/5.0 - 1.0/7.0 + 1.0/9.0 - 1.0/11.0;
于 2013-03-07T17:51:12.203 回答
2

尝试 1.0/3.0 等。

否则,每个子表达式将计算为 0,因为它们被解释为整数。

于 2013-03-07T17:51:37.230 回答