Serialize float with less decimal places than double

This commit is contained in:
Benoit Blanchon
2024-09-03 11:44:35 +02:00
parent 65ba36622c
commit 3b6bf45b8a
8 changed files with 103 additions and 92 deletions
@@ -83,6 +83,11 @@ TEST_CASE("serializeJson(JsonVariant)") {
check(3.1415927, "3.1415927");
}
SECTION("Float") {
REQUIRE(sizeof(float) == 4);
check(3.1415927f, "3.141593");
}
SECTION("Zero") {
check(0, "0");
}
+1 -1
View File
@@ -36,7 +36,7 @@ TEST_CASE("JsonVariant::as()") {
REQUIRE(variant.as<bool>());
REQUIRE(0 == variant.as<const char*>());
REQUIRE(variant.as<std::string>() == "4.199999809"); // TODO
REQUIRE(variant.as<std::string>() == "4.2");
REQUIRE(variant.as<long>() == 4L);
REQUIRE(variant.as<float>() == 4.2f);
REQUIRE(variant.as<unsigned>() == 4U);
+5 -7
View File
@@ -7,9 +7,9 @@
using namespace ArduinoJson::detail;
TEST_CASE("FloatParts<double>") {
TEST_CASE("decomposeFloat()") {
SECTION("1.7976931348623157E+308") {
FloatParts<double> parts(1.7976931348623157E+308);
auto parts = decomposeFloat(1.7976931348623157E+308, 9);
REQUIRE(parts.integral == 1);
REQUIRE(parts.decimal == 797693135);
REQUIRE(parts.decimalPlaces == 9);
@@ -17,17 +17,15 @@ TEST_CASE("FloatParts<double>") {
}
SECTION("4.94065645841247e-324") {
FloatParts<double> parts(4.94065645841247e-324);
auto parts = decomposeFloat(4.94065645841247e-324, 9);
REQUIRE(parts.integral == 4);
REQUIRE(parts.decimal == 940656458);
REQUIRE(parts.decimalPlaces == 9);
REQUIRE(parts.exponent == -324);
}
}
TEST_CASE("FloatParts<float>") {
SECTION("3.4E+38") {
FloatParts<float> parts(3.4E+38f);
auto parts = decomposeFloat(3.4E+38f, 6);
REQUIRE(parts.integral == 3);
REQUIRE(parts.decimal == 4);
REQUIRE(parts.decimalPlaces == 1);
@@ -35,7 +33,7 @@ TEST_CASE("FloatParts<float>") {
}
SECTION("1.17549435e−38") {
FloatParts<float> parts(1.17549435e-38f);
auto parts = decomposeFloat(1.17549435e-38f, 6);
REQUIRE(parts.integral == 1);
REQUIRE(parts.decimal == 175494);
REQUIRE(parts.decimalPlaces == 6);