diff options
| author | Stefan Boberg <[email protected]> | 2021-09-30 14:16:04 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-09-30 14:16:04 +0200 |
| commit | 43184af193ed01a9106ca99c9d82c7541dec8ca1 (patch) | |
| tree | 27af08addba7917c1da86b7725e60f9e5e0b2206 /zencore/compactbinary.cpp | |
| parent | timer: Added GetHifreqTimerToSeconds which returns a scaling factor to conver... (diff) | |
| parent | Merged main. (diff) | |
| download | zen-43184af193ed01a9106ca99c9d82c7541dec8ca1.tar.xz zen-43184af193ed01a9106ca99c9d82c7541dec8ca1.zip | |
Merge branch 'main' of https://github.com/EpicGames/zen
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 56a3dcb05..4072ab5cf 100644 --- a/zencore/compactbinary.cpp +++ b/zencore/compactbinary.cpp @@ -1474,10 +1474,10 @@ public: Builder << Accessor.AsIntegerNegative(); break; case CbFieldType::Float32: - Builder.Append("{}"_format(Accessor.AsFloat32())); + Builder.Append("{:.9g}"_format(Accessor.AsFloat32())); break; case CbFieldType::Float64: - Builder.Append("{}"_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 |