为什么这个数学不会起作用?

时间:2013-03-07 17:49:09

标签: c++ visual-studio

我正在尝试运行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!!!!!!!!

5 个答案:

答案 0 :(得分: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;

答案 1 :(得分:3)

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

double answer = 1 + 1/3.0 + 1/5.0 - 1/7.0 + 1/9.0 - 1/11.0;

答案 2 :(得分:2)

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

尝试:

double answer = 1 + 1/3.0 + 1/5.0 - 1/7.0 + 1/9.0 - 1/11.0;

答案 3 :(得分:2)

操作对整数常量起作用,然后结果转换为double。您应该按如下方式定义常量:

double answer = 1.0 + 1.0/3.0 + 1.0/5.0 - 1.0/7.0 + 1.0/9.0 - 1.0/11.0;

答案 4 :(得分:2)

尝试1.0 / 3.0等

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