diff options
Diffstat (limited to 'zencore/compactbinary.cpp')
| -rw-r--r-- | zencore/compactbinary.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/zencore/compactbinary.cpp b/zencore/compactbinary.cpp index f71c0aaea..f3fbf312c 100644 --- a/zencore/compactbinary.cpp +++ b/zencore/compactbinary.cpp @@ -1474,10 +1474,10 @@ public: Builder << Accessor.AsIntegerNegative(); break; case CbFieldType::Float32: - Builder.Append("%.9g"_format(Accessor.AsFloat32())); + Builder.Append("{:.9g}"_format(Accessor.AsFloat32())); break; case CbFieldType::Float64: - Builder.Append("%.17g"_format(Accessor.AsFloat64())); + Builder.Append("{:.17g}"_format(Accessor.AsFloat64())); break; case CbFieldType::BoolFalse: Builder << "false"sv; @@ -1831,6 +1831,31 @@ TEST_CASE("uson.json") CHECK(ValueOne == "ValueOne"); CHECK(ValueTwo == "ValueTwo"); } + + SUBCASE("number") + { + const double ExpectedFloatValue = 21.21f; + const double ExpectedDoubleValue = 42.42; + + CbObjectWriter Writer; + Writer << "Float" << ExpectedFloatValue; + Writer << "Double" << ExpectedDoubleValue; + + CbObject Obj = Writer.Save(); + + StringBuilder<128> Sb; + const std::string_view JsonText = Obj.ToJson(Sb).ToView(); + + std::string JsonError; + json11::Json Json = json11::Json::parse(JsonText.data(), JsonError); + + const float FloatValue = float(Json["Float"].number_value()); + const double DoubleValue = Json["Double"].number_value(); + + CHECK(JsonError.empty()); + CHECK(FloatValue == doctest::Approx(ExpectedFloatValue)); + CHECK(DoubleValue == doctest::Approx(ExpectedDoubleValue)); + } } #endif |