Есть такой код:
#include <iostream>
#include <map>
const double value = 0.7;
int main() {
typedef std::map<double, double> MR2; MR2 mr2;
for (double d = 0; d < 100; d += 0.1) mr2.insert(std::make_pair(d, d * 10));
std::pair<MR2::iterator, MR2::iterator> it2 = mr2.equal_range(value);
std::cout << "lower: " << it2.first->first;
std::cout << " upper: " << it2.second->first << std::endl;
return 0;
}
На выходе: lower: 0.7 upper: 0.8 логично!
Для value = 0... 0.7 все работает правильно, но если value в проге сделать равным 0.8 или больше, получим (для 0.8)
lower: 0.9 upper: 0.9
(для 0.9)
lower: 1 upper: 1
...
Скажете, что у меня не галлюцинации!!!??? где вкралась ошибка? помогите!