diff --git a/src/coders/json.cpp b/src/coders/json.cpp index 971e7cc1..29b9201c 100644 --- a/src/coders/json.cpp +++ b/src/coders/json.cpp @@ -2,6 +2,7 @@ #include #include +#include #include #include "commons.h" @@ -70,6 +71,8 @@ void stringify(Value* value, } else if (value->type == valtype::boolean) { ss << (value->value.boolean ? "true" : "false"); } else if (value->type == valtype::number) { + ss << std::fixed; + ss << std::setprecision(15); ss << value->value.decimal; } else if (value->type == valtype::integer) { ss << value->value.integer; diff --git a/src/coders/toml.cpp b/src/coders/toml.cpp index 3f5ee332..4981eaa6 100644 --- a/src/coders/toml.cpp +++ b/src/coders/toml.cpp @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -96,7 +97,10 @@ std::string Wrapper::write() const { break; case fieldtype::ftint: ss << *((int*)field->ptr); break; case fieldtype::ftuint: ss << *((uint*)field->ptr); break; - case fieldtype::ftfloat: ss << *((float*)field->ptr); break; + case fieldtype::ftfloat: + ss << std::fixed; + ss << std::setprecision(15); + ss << *((float*)field->ptr); break; case fieldtype::ftstring: ss << escape_string(*((const string*)field->ptr)); break;