fix(json_render): json_render is not accurate enough for extremely small numbers. eg: fmt::format_to(std::back_inserter(buffer), FMT_COMPILE({}), double(0.0000000000017114087924596788)); you will get a result of 1.7114087924, this is a completely wrong result.

This commit is contained in:
张峰 2023-01-30 10:50:23 +08:00
parent 376282d946
commit b372611e86

View File

@ -56,7 +56,10 @@ template <typename Out> struct Renderer
size_t decimalpos = std::find(buffer.begin(), buffer.end(), '.') - buffer.begin();
if (buffer.size() > (decimalpos + 10))
{
buffer.resize(decimalpos + 10);
buffer.clear();
fmt::format_to(std::back_inserter(buffer), FMT_COMPILE("{0:.10f}"), number.value);
// buffer.resize(decimalpos + 10);
}
write(buffer.data(), buffer.size());