QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1219|回复: 5

c++累加计算

[复制链接]
发表于 2005-11-6 20:05:56 | 显示全部楼层 |阅读模式
#include <iostream>
using namespace std;
int main(){
cout <<"欢迎使用\n";
void leijia();
leijia();
}
void leijia(){
float sr=1.0;
float js=0.0;
while (sr != 0){
cout <<"+";
cin >>sr;
js+=sr;}
cout <<"-------------------\n累加结果为:"<<js<<"\n-------------------\n";
leijia();}
运行后,在输入1.01然后再输入1.1在输入1后,结果只显示3.1,但0.01没了。
我编写的这个小程序是想计算整数与带小数点的数相加的结果,但现在全输入整数或全小数点的数可以正确计算,但如果混合输入就不正确了。
大家可以编译一下,在输入类似的数字后,有时能显示小数点后面的2位,有时就显示1位,还有时候就只显示整数了。怎么回事呀。
 楼主| 发表于 2005-11-7 08:11:51 | 显示全部楼层
1000.01
23000.1
结果是:24000.1少1位呀!
回复

使用道具 举报

发表于 2005-11-7 09:40:36 | 显示全部楼层
在cin >>sr; 后面加一行printf("%f\n",sr);
发现cin的精度有问题,比如输入23000.1,实际值是23000.099609。
另外:1.01+1.1+1我这的结果是正确的。
回复

使用道具 举报

 楼主| 发表于 2005-11-7 19:15:39 | 显示全部楼层
我发现这个程序计算千以内的没错,但一上万就有问题了,怎么解决呢?
回复

使用道具 举报

发表于 2005-11-15 19:24:29 | 显示全部楼层
#include<iostream>
using namespace std;

void mul_add();

int main()
{
        cout<<"Welcome to use mul_add program"<<endl;
        mul_add();

        return 0;
}

void mul_add()
{
        float sr=1.0;
        float js=0.0;

        while(sr>1.0e-6)//其实就是这里的问题,仔细思考一下为什么?
        {
                cout<<"+";
                cin>>sr;
                js+=sr;
        }
        cout<<"the mul_add result is:"<<js<<endl;
}
回复

使用道具 举报

 楼主| 发表于 2005-11-16 08:02:39 | 显示全部楼层
好的,谢谢。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-3 04:14 , Processed in 0.052395 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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