]> git.cworth.org Git - apitrace/commitdiff
Use appropriate number of digits when dumping floating point numbers.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Mon, 14 May 2012 19:20:44 +0000 (20:20 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Mon, 14 May 2012 19:20:44 +0000 (20:20 +0100)
common/trace_dump.cpp
retrace/json.hpp

index d9dcf1197737a7d1a2033fc463d0b20edfc27842..2b8c27a3780b28f57bb4ddad5ba14aebac9cdc97 100644 (file)
@@ -24,6 +24,8 @@
  **************************************************************************/
 
 
+#include <limits>
+
 #include "formatter.hpp"
 #include "trace_dump.hpp"
 
@@ -89,11 +91,15 @@ public:
     }
 
     void visit(Float *node) {
+        std::streamsize oldPrecision = os.precision(std::numeric_limits<float>::digits10 + 1);
         os << literal << node->value << normal;
+        os.precision(oldPrecision);
     }
 
     void visit(Double *node) {
+        std::streamsize oldPrecision = os.precision(std::numeric_limits<double>::digits10 + 1);
         os << literal << node->value << normal;
+        os.precision(oldPrecision);
     }
 
     void visit(String *node) {
index 14ff501f5681777a19a56b8321643d2e68239388..6af1f4c6c4fab898fae8ca730c5092cefc850459 100644 (file)
@@ -35,6 +35,7 @@
 #include <wchar.h>
 
 #include <iomanip>
+#include <limits>
 #include <ostream>
 #include <string>
 
@@ -332,7 +333,7 @@ public:
             writeNull();
         } else {
             separator();
-            os << std::dec << std::setprecision(9) << n;
+            os << std::dec << std::setprecision(std::numeric_limits<T>::digits10 + 1) << n;
             value = true;
             space = ' ';
         }