Commit fae87266 by Michael Tesch Committed by Dominic Hamon

Replace JSON inf and nan with JS compliant Infinity and NaN

parent 5acb0f05
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <string> #include <string>
#include <tuple> #include <tuple>
#include <vector> #include <vector>
#include <cmath>
#include "string_util.h" #include "string_util.h"
#include "timers.h" #include "timers.h"
...@@ -53,10 +54,15 @@ std::string FormatKV(std::string const& key, double value) { ...@@ -53,10 +54,15 @@ std::string FormatKV(std::string const& key, double value) {
std::stringstream ss; std::stringstream ss;
ss << '"' << key << "\": "; ss << '"' << key << "\": ";
const auto max_digits10 = std::numeric_limits<decltype(value)>::max_digits10; if (std::isnan(value))
const auto max_fractional_digits10 = max_digits10 - 1; ss << "NaN";
else if (std::isinf(value))
ss << std::scientific << std::setprecision(max_fractional_digits10) << value; ss << (value < 0 ? "-" : "") << "Infinity";
else {
const auto max_digits10 = std::numeric_limits<decltype(value)>::max_digits10;
const auto max_fractional_digits10 = max_digits10 - 1;
ss << std::scientific << std::setprecision(max_fractional_digits10) << value;
}
return ss.str(); return ss.str();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment