为什么这个数学不起作用?
why won't this math work?
我试图运行一个循环,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,因为它们被解释为整数。
相关文章:
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 为什么二进制搜索在我的测试中不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 为什么这段代码不起作用,我该如何解决?
- 为什么 zlib 放气初始化调用一次不起作用?
- 为什么 ulimit -v 在 Clang 的地址清理器下不起作用?
- 为什么在 while 循环中返回表达式不起作用
- 为什么这些完全相似的代码不起作用?
- 为什么我的数组双精度函数不起作用?
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- 以下打印树函数不起作用为什么?
- C++中的dynamic_cast在没有 RTTI 的情况下不起作用;为什么?
- 由于 RPTR->num=30 与 (*rptr).num=30 相同,但是*((*rptr).ptr).name 不起作用为什么?
- 在调试器模式下工作,但在最终版本中不起作用.为什么
- 模组功能不起作用为什么
- CreateProcess在某些计算机上工作,而在其他计算机上不起作用.为什么