qq_40826371 2020-05-20 21:22 采纳率: 0%
浏览 939

C++的set容器中为什么会存在相同的元素呢?

在写代码的时候,发现创建的set s,中添加的数据存在相同的元素,被添加到set中。代码如下:

#include <bits/stdc++.h>
using namespace std;
int main()
    {
        set<double> s;
        for(int i=0;i<=5;i++)
            for(int j=0;j<=4;j++)
                for(int k=0;k<=6;k++)
                    {

                        double money = i*0.8+j*1.0+k*1.8;
                        s.insert(money);
                    }
        for(set<double>::iterator it=s.begin();it!=s.end();it++)
            cout<<*it<<' ';
        cout<<endl;
        cout<<s.count(11.2)<<" "<<s.count(7.6)<<endl;
        //cout<<s.size()-1<<endl;
        return 0;
    } 
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-05-20 23:40
    关注

    double存在精度误差,所以看似相同的两个数字,只要有点不同,就被当作不同。
    建议你将小数点平移一位,用整数代替运算,输出的时候除以10

    评论

报告相同问题?

悬赏问题

  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的