VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 795|回复: 8

a problem

[复制链接]

2

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-4 08:00:01 | 显示全部楼层 |阅读模式
对任意输入的小于1的数,分别求出其各位数字并输出.要求输出的个数字之间要空2格.例如输入0.435  输出结果为   0  4  3  5



#include<iostream>
using namespace std;
int main()
{
        float x;
        int s;
        cin>>x;
        cout<<0<<"  ";
        while(x!=0)
        {
                s=x*10;
                cout<<s<<"  ";
                x=x*10-s;
        }
        return 0;
}





为什么我输入0.435
输出的却是:0  4  3  5  0  0  0  0  0  2  3  8  4

我若是循环条件改成while(x>1e-6)
输出的也是一样的。。。

怎么回事啊?
回复

使用道具 举报

0

主题

17

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-1-4 12:06:01 | 显示全部楼层
因为你输入的0.435,在内在中变成了0.435000002384
回复

使用道具 举报

0

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-4 12:15:01 | 显示全部楼层
还是转换为字符串后输出的好
回复

使用道具 举报

0

主题

17

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-1-4 12:18:01 | 显示全部楼层
判断浮点数是不是等于0,不能用!=0这样的条件,而应该用
x<eps&&x>-eps
其中eps是一个足够小的值,你可以取成0.000001或其他
回复

使用道具 举报

0

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-4 12:21:01 | 显示全部楼层
浮点数的问题
改成
while(x<0.0001)
回复

使用道具 举报

0

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-4 12:27:01 | 显示全部楼层
char *pch = new char;

    sprintf(pch, "%f", x);
//处理字符串pch.读取每个字符。注意处理最后全为0的情况。
...


delete pch;
回复

使用道具 举报

0

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-4 14:21:01 | 显示全部楼层
#include <iostream>
#include <string>
using namespace std;

int main()
{

string str;
cin>>str;

for (string::size_type ix = 0; ix != str.size(); ++ix)
{
    if( str[ix] != '.')
    {
        cout << str[ix]<< "  ";
    }
}

return 0;
}
回复

使用道具 举报

2

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-1-4 16:06:01 | 显示全部楼层
哦。。谢谢大家。。。但是楼上的程序没看懂。。。

for (string::size_type ix = 0; ix != str.size(); ++ix)



嗯。。。好像就是要把它转换成字符串才行。。
要是把循环条件改成while(x<1e-6&&x>-1e-6)也不行。。
回复

使用道具 举报

0

主题

17

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-1-4 16:48:01 | 显示全部楼层
楼主可以把条件改成while(x<1e-4&&x>-1e-4)试试啊,因为根据你前面的结果来看,
while(x<1e-6&&x>-1e-6)也不会退出的。如果不行,你还可以改成大一点的。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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