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

why won't this math work?

本文关键字:不起作用 为什么      更新时间:2023-10-16

我试图运行一个循环,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!!!!!!!!

你正在使用整数数学。

两个整数之间的运算结果将是一个向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;

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

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

在c++中,当你用一个整数除以另一个整数时,你得到一个整数。因此,1/3 = 0

试题:

double answer = 1 + 1/3.0 + 1/5.0 - 1/7.0 + 1/9.0 - 1/11.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.0/3.0等

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