Description

ARDUINOJSON_USE_DOUBLE determines the type used to store floating point values in JsonVariant:

  • If ARDUINOJSON_USE_DOUBLE == 0, then JsonVariant stores a float
  • If ARDUINOJSON_USE_DOUBLE == 1, then JsonVariant stores a double

The default is 0 on embedded systems, 1 otherwise.

Examples

Example with 32-bit precision

The following program uses 32-bit precision:

#define ARDUINOJSON_USE_DOUBLE 0
#include <ArduinoJson.h>

void example_float()
{
  StaticJsonDocument<200> doc;
  JsonObject root = doc.to<JsonObject>();
  root["pi"] = 3.14159265359;

  serializeJson(doc, Serial);
}

It produces the following output:

{"pi":3.141593}

See online demo on wandbox.org

Example with 64-bit precision

The following program uses 64-bit precision:

#define ARDUINOJSON_USE_DOUBLE 1
#include <ArduinoJson.h>

void example_double()
{
  StaticJsonDocument<200> doc;
  JsonObject root = doc.to<JsonObject>();
  root["pi"] = 3.14159265359;

  serializeJson(doc, Serial);
}

It produces the following output:

{"pi":3.141592654}

See online demo on wandbox.org)

Remarks

Caution: the memory consumption will be higher, and the results from the ArduinoJson Assistant will be wrong.

Caution: make sure you use the same value for each compilation unit, i.e., for each .ino and .cpp in your project.

See also