鱼C论坛

 找回密码
 立即注册
查看: 4961|回复: 12

关于C++的FOR··求解 小甲鱼

[复制链接]
发表于 2013-6-29 07:55:44 | 显示全部楼层 |阅读模式
1鱼币
#include<iostream>
using std::cout;
int _tmain(int argc, _TCHAR* argv[])
{
        double n=0;
        for( n=0.0;n!=1.2;n+=0.2)
        {
                cout<<n<<"\t";
        }
        return 0;
}
  怎么书上说会是 无限循环呢 求解

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-29 08:11:14 | 显示全部楼层
本帖最后由 只爱你一人 于 2013-6-29 08:13 编辑

刚做了个测试,不会无限循环!不过你的代码……
下面是我用C++重写的! QQ图片20130629081359.jpg
  1. #include<iostream>
  2. int main()
  3. {
  4.         using namespace std;
  5.         double n=0.0;
  6.         for (n;n!=1.2;n+=0.2)
  7.             cout<<n<<endl;
  8.         return 0;   
  9. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-29 10:52:19 | 显示全部楼层

for (n;n!=1.2;n+=0.2)
             cout<<n<<endl;
改为

for (n;n!=1.1;n+=0.1)
             cout<<n<<endl;
你就知道了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-29 11:52:57 | 显示全部楼层
:L还真的无限循环了……为什么?求解答!!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-29 13:19:18 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-29 13:42:51 | 显示全部楼层
了解了!感谢!又学到新知识了!计算机的二进制无法完整表示十进制小数1.1(有的可能不同吧),所以会无限循环!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-29 16:13:37 | 显示全部楼层
学习了!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-29 18:51:35 | 显示全部楼层
{:7_155:}.........
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-29 21:18:06 | 显示全部楼层
怎么我写这个不会 无限循环  再求解:loveliness:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-30 06:10:55 | 显示全部楼层
仰望天上的光 发表于 2013-6-29 13:19
因为计算机无法精确表示数字1.1

怎么我写这个不会 无限循环  再求解
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-2 20:25:41 | 显示全部楼层
本帖最后由 565123 于 2013-7-2 20:43 编辑

因为他刚好精确的表示了
不过最好写成

  1. #include<iostream>
  2. #include<cmath>
  3. int main()
  4. {
  5.         using namespace std;
  6.         double n=0.0;
  7.         for (n;fabs(n-1.2)>1e-14;n+=0.2)
  8.             cout<<n<<endl;
  9.         return 0;   
  10. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-2 22:20:22 | 显示全部楼层
骗子死全家 发表于 2013-6-29 21:18
怎么我写这个不会 无限循环  再求解

计算机不能精确表示0.1,所以每次+0.1都会产生误差。你可以加大+0.1的次数,因此误差也会被放大。(只有误差被放大到一定程度,才会出现无限循环)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-7-3 22:36:56 | 显示全部楼层
仰望天上的光 发表于 2013-7-2 22:20
计算机不能精确表示0.1,所以每次+0.1都会产生误差。你可以加大+0.1的次数,因此误差也会被放大。(只有误 ...

膜拜:lol:lol:lol
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-21 18:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表