Skip to content

Commit

Permalink
#1069: Fixed: Double 0.0 gets converted to Int32 0 after editing
Browse files Browse the repository at this point in the history
  • Loading branch information
schetnikovich committed Apr 10, 2016
1 parent 059a3dc commit a0d5c67
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/robomongo/app/main_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,19 @@ void precisionAssert(const std::string &text, double d) {
std::stringstream s;
s.precision(std::numeric_limits<double>::digits10);
s << d;
if (d == (long long)d)
s << ".0";
std::cout << "Checking " << text << " - ";
assert(text == s.str());
std::cout << "Correct. " << std::endl;
}

void testPrecision() {
precisionAssert("-9.987654321", -9.987654321);
precisionAssert("-1.0", -1.0);
precisionAssert("-0.0", -0.0);
precisionAssert("0.0", 0.0);
precisionAssert("9.0", 9.0);
precisionAssert("9.8", 9.8);
precisionAssert("9.9", 9.9);
precisionAssert("9.98", 9.98);
Expand Down
9 changes: 9 additions & 0 deletions src/robomongo/core/utils/BsonUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,10 @@ namespace Robomongo
// was 16
s.precision(std::numeric_limits<double>::digits10);
s << elem.number();

// Leave trailing zero if needed
if (elem.number() == (long long)elem.number())
s << ".0";
}
else if (std::isnan(elem.number()) ) {
s << "NaN";
Expand Down Expand Up @@ -578,6 +582,11 @@ namespace Robomongo
std::stringstream s;
s.precision(std::numeric_limits<double>::digits10);
s << elem.Double();

// Leave trailing zero if needed
if (elem.Double() == (long long)elem.Double())
s << ".0";

con.append(s.str());
}
break;
Expand Down

0 comments on commit a0d5c67

Please sign in to comment.