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()
{
  StaticJsonBuffer<200> jsonBuffer;
  JsonObject& root = jsonBuffer.createObject();
  root["pi"] = 3.14159265359;

  root.printTo(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()
{
  StaticJsonBuffer<200> jsonBuffer;
  JsonObject& root = jsonBuffer.createObject();
  root["pi"] = 3.14159265359;

  root.printTo(Serial);
}

It produces the following output:

{"pi":3.141592654}

See online demo on wandbox.org

Remarks

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

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

See also